1

我正在尝试按如下方式创建 RewriteRule;

RewriteCond %{HTTP_HOST} ^dev$ [NC]
RewriteRule ^(.*)$ test/$1 [L]

当有人输入时http://dev/index.php,实际上将检索到的文件是http://dev/test/index.php.

但是,这似乎会导致大量内部重定向。

有人帮忙吗?

4

1 回答 1

2

添加

RewriteCond %{REQUEST_URI} !^/?test

...在第一个之前RewriteCond

重写规则上的[L]标志(有点违反直觉)导致重写过程再次从顶部开始。您当前的规则将在每次迭代时匹配,并且 mod_rewrite 将进入无限循环。添加上述RewriteCond意味着它只会在第一次迭代时匹配。

如果您在 Apache 2.3.9 或更高版本上运行,您可以使用[END]重写规则上的标志而不是[L]- 这将导致 mod_rewrite 立即退出并避免问题。如果可用,这实际上是一个更好的解决方案,因为上述内容RewriteCond会阻止您的规则适用于合法以 . 开头的页面test

于 2012-08-15T15:56:16.387 回答