我有以下情况,我花了好几个小时试图弄清楚它为什么会重定向。
这是我的htaccess文件:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/mypage/?$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule ^mypage/?$ /testing.php [NC,L]
当我浏览到http://www.example.com/mypage时,它会重定向到https://www.example.com/mypage
我希望因为!^ / mypage /?$条件它不会,但是,我似乎完全错了!
有人可以让我摆脱苦难,让我知道为什么这不起作用吗?
提前致谢。
答案 0 :(得分:0)
这是因为在/mypage
的第二个循环中,第二个规则正在重写/testing.php
到REQUEST_URI
,而您的/testing.php
变为mod_rewrite
。
你的规则如下:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/(mypage/?|testing\.php)$ [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteRule ^mypage/?$ /testing.php [NC,L]
还要确保在新的浏览器中测试它以避免301缓存问题。