web-dev-qa-db-ja.com

WordPress末尾のスラッシュなしのHTTPからHTTPSへの二重リダイレクト

ユーザーまたはボットがHTTPSおよび末尾のスラッシュなしでURLにアクセスしようとすると、私のWordPressパワードサイトの1つで二重リダイレクトが発生することに気付きました。

要するに:

  • http://example.com/contact-ushttps://www.example.com/contact-usにリダイレクトします
  • https://www.example.com/contact-ushttps://www.example.com/contact-us/にリダイレクトします

私のhtaccessファイルは次のようになります:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

これらの二重リダイレクトの発生を防ぐために何を変更する必要がありますか?

5
Simon Hayter

スタックオーバーフローのanubhava によって提供されるスニペットを使用して、これを機能させることができました。誰かがこのコードで潜在的な問題を見つけた場合、またはより良いよりクリーンなリダイレクトをお持ちの場合は、答えとしてコードをlonすることをheしないでください。

SOURCE

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_Host} ^domain\.com$ [OR]
RewriteCond %{HTTPS} off
RewriteRule ^/?$ https://www.domain.com [R=301,L]

RewriteCond %{HTTP_Host} ^domain\.com$ [OR]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule ^(.+?)/?$ https://www.domain.com/$1/ [R=301,L]

だから私の.htaccessファイルは次のようになりました:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_Host} ^example\.com$ [OR]
RewriteCond %{HTTPS} off
RewriteRule ^/?$ https://www.example.com/ [R=301,L]

RewriteCond %{HTTP_Host} ^example\.com$ [OR]
RewriteCond %{HTTPS} off [OR]
RewriteCond %{REQUEST_URI} !(/$|\.)
RewriteRule ^(.+?)/?$ https://www.example.com/$1/ [R=301,L]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
5
Simon Hayter