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