2016-08-13 551 views
0

我需要你的帮助。 假设这是我的网站:example.com.htaccess带URL重写的SSL重定向

我想将http重定向到https。 此外,我还想重写网址。 如果我访问网站:

https://example.com/new一切工作正常。

如果我访问该网站: http://www.example.com/new它重定向到https,但不会重写URL。结果是这样的:

`https://example.com/old` 


RewriteEngine on 

RewriteRule ^new/(.*)$ old/$1 [L,QSA] 

RewriteCond %{HTTPS} =off [NC,OR] 
RewriteCond %{HTTP_HOST} ^example.com [NC,OR] 
RewriteCond %{HTTP_HOST} ^www.example.com [NC,OR] 
RewriteCond %{HTTP_HOST} ^www.example.com [NC] 
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301,NC] 

我试图把规则以另一种顺序,但这根本不工作。

我希望你能帮助我。非常感谢:)

+0

切换您的规则的顺序。 – hjpotter92

回答

0

如果你只是想删除www,你只需要这个。

RewriteEngine on 

RewriteCond %{HTTPS} ^off [OR] 
RewriteCond %{HTTP_HOST} !^example\.com [NC] 
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301,NC] 

RewriteRule ^new/(.*)$ old/$1 [L,QSA] 
+0

我已经使用您的代码,现在工作正常。非常感谢! :) – rufsam

0

规则

RewriteRule ^new/(.*)$ old/$1 [L,QSA] 

被配置为L(最后一个),因此它不再处理一旦它匹配的其他规则。

您需要切换规则的顺序。在提到的规则之前添加HTTPS重定向之前

+0

感谢您的anwser!我曾尝试在其他规则下放置RewriteRule^new /(.*)$ old/$ 1 [L,QSA],但它不起作用。 – rufsam