如何解决htaccess 重写通配符子域解释
亲爱的社区。 今天我做了这个.htaccess重写规则(在互联网上找到了一些并自己添加了一些)
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.* [NC]
RewriteCond %{HTTP_HOST} ^(.*).site.com/(.*)$
RewriteRule ^ %1.PHP
当我请求 some.site.ru - site.ru/some.PHP 内容触发。没关系。当我请求 some.site.ru/readme.txt 时,我会看到 site.ru/readme.txt 内容。我不太明白为什么它工作正常。
我认为 RewriteRule ^ %1.PHP
使所有请求都通过 *.PHP 文件。我错了吗?
另外我无法理解RewriteRule ^
这部分。和 RewriteRule ^(.*)$
一样吗?
解决方法
这是你的规则:
RewriteCond %{HTTP_HOST} !^www.* [NC]
RewriteCond %{HTTP_HOST} ^(.*).site.com/(.*)$
RewriteRule ^ %1.php
由于 RewriteCond %{HTTP_HOST}
前面存在错误模式,这是一个 DO NOTHING 规则,换句话说,由于 /
的存在,该规则永远不会执行第二个条件永远不会为真,因为 %{HTTP_HOST}
仅匹配 Web 请求的主机名部分。所以 %{HTTP_HOST}
只能匹配 www.example.ru
或 example.ru
。
所以很明显,/readme.txt
URL 工作正常,无需任何重写。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。