【发布时间】:2018-11-16 18:35:55
【问题描述】:
这条规则非常有效:
RewriteCond %{HTTP_HOST} ^(.*)\.[a-z0-9\-]{3,}\..*
RewriteRule ^t/(.*)$ /p.php?p=$1 [L]
这条几乎相同的规则会抛出 404:
RewriteCond %{HTTP_HOST} ^(.*)\.[a-z0-9\-]{3,}\..*
RewriteRule ^p/(.*)$ /p.php?p=$1 [L]
会不会有一些 apache 或 DNS 规则破坏了这一点?我在旧服务器上有相同的 .htaccess 文件,它工作正常。新服务器是 CentOS7 和 PHP7。
【问题讨论】:
-
你的网络服务器上有
p/吗?如果您不这样做,那么这确实是您描述的行为会发生的唯一合乎逻辑的原因。 -
你可以在
RewriteEngine On行之前添加Options -MultiViews并重新测试这两个规则。 -
我不确定如何或为什么,但这似乎效果很好!你能在答案中解释一下吗?
标签: php regex apache .htaccess