我正在尝试按如下方式创建 RewriteRule;
RewriteCond %{HTTP_HOST} ^dev$ [NC]
RewriteRule ^(.*)$ test/$1 [L]
当有人输入时http://dev/index.php
,实际上将检索到的文件是http://dev/test/index.php
.
但是,这似乎会导致大量内部重定向。
有人帮忙吗?
添加
RewriteCond %{REQUEST_URI} !^/?test
...在第一个之前RewriteCond
。
重写规则上的[L]
标志(有点违反直觉)导致重写过程再次从顶部开始。您当前的规则将在每次迭代时匹配,并且 mod_rewrite 将进入无限循环。添加上述RewriteCond
意味着它只会在第一次迭代时匹配。
如果您在 Apache 2.3.9 或更高版本上运行,您可以使用[END]
重写规则上的标志而不是[L]
- 这将导致 mod_rewrite 立即退出并避免问题。如果可用,这实际上是一个更好的解决方案,因为上述内容RewriteCond
会阻止您的规则适用于合法以 . 开头的页面test
。