htaccess重定向似乎忽略了不重写

时间:2014-08-09 16:16:03

标签: apache .htaccess mod-rewrite redirect

我有以下情况,我花了好几个小时试图弄清楚它为什么会重定向。

这是我的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 /?$条件它不会,但是,我似乎完全错了!

有人可以让我摆脱苦难,让我知道为什么这不起作用吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

这是因为在/mypage的第二个循环中,第二个规则正在重写/testing.phpREQUEST_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缓存问题。