2016-10-11 20 views
1

httpをhttpsにリダイレクトし、wwwをwww以外にリダイレクトしたい。httpをhttpsに、wwwを非wwwにしてURLを尊重する

ケース:

http://example.com/my/url 
http://www.example.com/my/url 
https://example.com/my/url 
https://www.example.com/my/url 

結果

https://example.com/my/url 
https://example.com/my/url 
https://example.com/my/url 
https://example.com/my/url 

私の現在のhtaccessファイル:

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

RewriteCond %{HTTPS} off 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301] 

問題:

https://example.com/index.phpにリダイレクトされます。

私はそれがURLを尊重したいと思っていますhttps://example.com/my/url

私は多くの疑問を見つけましたが、まだ完全な解決策が見つかりませんでした。実際、上記のhtaccessコードは、10回の試行のうち、非常にうまく機能した唯一のコードでした。

答えて

2

あなたはwwwhttp -> httpsを除去するために、この単一のルールを使用することができます。

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^www\. [NC,OR] 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] 
RewriteRule^https://%1%{REQUEST_URI} [R=301,L,NE] 

# rest of rules go here .... 

あなたはあまりにも多くのリダイレクトに問題がある場合は、との二行を置き換えるために試してみてください。
RewriteCond %{ENV:HTTPS} !on

ことがありますこのルールを最初のルールとして保存し、テストする前にブラウザのキャッシュをクリアすることが重要です。

+1

1つのルールにすべてが含まれています。私は解決策は他のルールの前に置くことだと思います。ありがとう! –

関連する問題