从根到子文件夹重写时无限循环

时间:2015-11-25 05:44:04

标签: .htaccess mod-rewrite

我想将所有请求从root用户重定向到dev目录。

example.com/anything 指向 example.com/dev/index.php?url=anything

my_html中的htaccess

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule (.*) /dev/?url=$1 [QSA,NC,R]

当我访问http://example.com/anything我做错了什么时,它会导致无限循环错误?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可能忘记将dev排除在重定向之外。

  RewriteCond %{REQUEST_URI} !^/dev/

答案 1 :(得分:0)

尝试:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_URI} !^/dev

RewriteRule (.*) /dev/$1 [QSA,NC,R]

无限循环的原因可能是您的目标网址“/ dev /?url = $ 1”正在重定向回自身。因为如果“/ dev”不是真正的目录,规则中没有条件阻止它重定向到自身。

example.com/anything

正在重定向到

example.com/dev/?url=anything

在第二次迭代

  example.com/dev/?url=anything

正在重定向到

example.com/dev/?url=dev

.......

它继续循环直到最后一次迭代。

您可以通过在规则中添加以下条件来解决此问题

@Hereblur是对的,您应该添加:

 RewriteCond %{REQUEST_URI} !^/dev

因为它忽略了uri,如果它以“/ dev”开头并跳过规则。