Apache .htaccess |重定向太多
我想在我的Apache .htaccess |重定向太多,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我想在我的.htaccess文件中添加一个IP筛选器,但在应用它之后,将显示一个过多重定向错误 .htaccess的内容: RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ RewriteRule ^(.*)$ https://ww
.htaccess
文件中添加一个IP筛选器,但在应用它之后,将显示一个过多重定向错误
.htaccess
的内容:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{HTTPS} on
RewriteCond %{REMOTE_ADDR} xxx.xxx.xxx.xxx
RewriteRule ^ /test.php [R=302,L]
为什么会出现此错误?我假设您在这里尝试做两件事:
test.php
test.php
时仍在检查它。由于会再次出现匹配,重定向将持续循环。通过添加适当的条件,我们在检查IP地址之前检查请求的URI是否不是test.php
。我的答案底部附近显示了这一行,其中包括对原始代码的增强
重新编写引擎打开
#强制HTTPS
重写cond%{HTTPS}!在…上
重写规则(*)https://%{HTTP\u HOST}%{REQUEST\u URI}
#强制www
重写cond%{HTTP_HOST}^www\。
重写cond%{HTTPS}s^on(s)| off
重写第二个http%1://%{http_HOST}^(https?://)(www\)(.+)$
重写规则^%1%3%{REQUEST_URI}[R=301,L]
#如果某个IP匹配,则重定向到test.php
重写cond%{REQUEST_URI}^/test\.php
重写cond%{REMOTE_ADDR}xxx.xxx.xxx.xxx
重写规则^/test.php[R=302,L]
如果需要匹配多个IP地址,则应为每个IP地址(最后一个除外)使用或
标志:
#如果某组IP匹配,则重定向到test.php
重写cond%{REQUEST_URI}^/test\.php
重写cond%{REMOTE_ADDR}xxx.xxx.xxx.xxx[或]
重写cond%{REMOTE_ADDR}xxx.xxx.xxx.xxx[或]
重写cond%{REMOTE_ADDR}xxx.xxx.xxx.xxx[或]
重写cond%{REMOTE_ADDR}xxx.xxx.xxx.xxx
重写规则^/test.php[R=302,L]
因为如果%{REMOTE\u ADDR}
匹配,您将发送/test.php
的位置
头,浏览器将重定向到该头。此时,它将匹配%{REMOTE_ADDR}
和^
,然后发送/test.php
的位置
头。在那一点上……事实上——我原以为循环来自www.
的测试。我会更新我的答案,谢谢你指出这一点。非常感谢。我可以做些什么来隐藏url吗?因此,如果我想重定向到子文件夹中的文件,我如何重写显示的url?如“/test/index.html”->“/”。很高兴它对您有用。如果您有新问题,请回答,因为您原来的问题已得到回答。不过,作为旁注,我认为这是不切实际的。最好重定向到单独的页面。但是,您可以在检查IP地址之前创建一个将/test
映射到/test.php
的规则。然后您可以重定向到/test
。最后!一个真正有效的答案!谢谢你,先生!