微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

htaccess 重写通配符子域解释

如何解决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.ruexample.ru

所以很明显,/readme.txt URL 工作正常,无需任何重写。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。