2017-07-12 7 views
0

.htaccessファイルに問題があります。これは私のコードです:https://example.comはmod_rewriteを使用して間違ったURLにリダイレクトします

RewriteEngine On 

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

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

それはWWWに、その後、非HTTPSからhttpsに非WWWから最初のリダイレクトだけに行くとき、それは、問題があります。

https://example.com 

すなわち:httpsでなく、 wwwのように私を巨大なリンクにリダイレクトします。

https://www.example.com/home/c3238912/public_html/httpss://www.example.com/home/c3238912/public_html/httpss://www.example.com/home/c3238912/public_html/httpss://www.example.com/home/c3238912/public_html/ 

どうすれば可能ですか?

答えて

0

sをhttpsリダイレクトに複製しましたが、ここに言及していませんか?

この例では、リダイレクトされたパスにhttpssが表示されます。このようなタイプミスは、httpssプロトコルが存在しないため、この問題を引き起こします。これはパスとみなされ、無限のリダイレクトとみなされます。

私の理解では、あなたが本当のルールでは、次のとおりです。

RewriteRule ^(.*)$ httpss://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

は、あなたの質問にそれを示して正確に同じように、余分なsを削除します。 以前にタイプミスがありましたが修正した場合は、キャッシュを空にしてください。リダイレクトです。

0

2回目のリダイレクトが複数回実行されているようです。ルールを分割する代わりに、複数のリダイレクトを修正する必要があるルールを接続することができます。

は、使用してみてください:

RewriteCond %{HTTPS} !=on [OR] 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302] 

私はこれはそれテスト目的のために一時的なリダイレクトになり、302にRフラグを変更しました。このルールが見つかった場合は、それを301に戻して永続的なリダイレクトを行います。

これをテストする前にキャッシュをクリアしてください。

関連する問題