我得到了以下htaccess,最终会出现在重定向循环中:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/int(.*)$
RewriteRule ^(.*)$ /int [R,L]
RewriteRule . index.php [L]
我添加了第一条将根请求重定向到特定子文件夹的规则。 第二条规则来自WordPress(以及其他)
我不明白为什么这应该在重定向循环中结束。 第二次重写会触发另一个请求,以便再次检查htaccess吗? Thant会解释这个循环。
谢谢
答案 0 :(得分:2)
每次重写都会创建一个新请求,通过.htaccess重新处理。
您正在重写任何不以/int(.*)
到/int
开头的内容。但是,以/int
开头的任何内容都会跳过第一次重写条件并被重写为index.php
。然后,index.php
会重写为/int
,因为它不会以/int(.*)
开头。然后/int
被重写为index.php
......以及......和...
BTW:您可以通过添加第二次重写条件来阻止无限循环,以便在REQUEST_URI
为/index.php
RewriteCond %{REQUEST_URI} !^/index.php$
RewriteCond %{REQUEST_URI} !^/int(.*)$
RewriteRule ^(.*)$ /int [R,L]
如果忘记你是否需要在第一次重写条件中使用前导斜线...请尝试两种方式。
答案 1 :(得分:0)
您告诉任何不在/int
文件夹中的页面是重定向/int
文件夹,但是下一行是您要将所有页面重定向到{{1页面。
所以第一条规则说:
index.php
将被重定向到 - > http:example.com/about.php
。
但是第二条规则说
http:example.com/int
将被重定向 - >到http:example.com/int
然后第一条规则重新开始并再次轮回