Mod重写冲突

时间:2012-02-13 17:15:57

标签: .htaccess mod-rewrite

我无法从http重定向到https:'( 我的实际.htaccess看起来像

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on    
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule .* index.php [L]
</IfModule>

我正在添加下一行

    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

但与之前的行发生冲突。

我将http://www.example.com/lents/johnson.html?type=1添加到网址。

而不是与https相同

我正在https://www.example.com/index.php?type=1

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要将重定向规则置于所有其他规则之上,以便在任何URL重写发生之前进行重定向:

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/(media|skin|js)/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule .* index.php [L]