Mod重写在Mozilla中不能很好地工作

时间:2014-05-04 11:36:37

标签: apache .htaccess mod-rewrite

我正在将我网站上的所有http://http://www重写为https://www

除Mozilla Firefox外,所有浏览器都能正常运行。当我尝试使用http://example.com访问我的网站时,会重定向到:https://www.example.com/https:/example.com/

我的.htaccess:

RewriteCond %{HTTP_HOST} ^(example\.com)$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

RewriteCond %{HTTP_HOST} !^(www)\. [NC]
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com [NC]
RewriteRule ^([^/]*)$ hosted_form.php/?username=%1&hash=$1 [R,L]

请问我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

首先,您的前2个规则可以组合成一个:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.example.com$%{REQUEST_URI} [R=301,L,NE]

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$ [NC]
RewriteRule ^([^/]+)/?$ hosted_form.php/?username=%1&hash=$1 [R,L,QSA]

完成后,您需要清除Firefox上的浏览器缓存,因为重写在所有浏览器上的行为应该相同。