我想将所有请求从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我做错了什么时,它会导致无限循环错误?
谢谢!
答案 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”开头并跳过规则。