こんにちは。
お客さんのWordpressの常時SSL化の際に無限ループにハマりました。
結論から言うとMW WP FORMの入力画面がhttpのままだったのが原因だったのですが、
.htaccessのリダイレクト設定を備忘録的に残しておきたいと思います。
WordPressの常時SSL化のために触ったのはリダイレクト設定に必要な.htaccessファイルです。
サイトをhttpからhttpsへ301リダイレクト(.htaccess)
1 2 3 |
RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] |
リダイレクト処理前
1 2 3 4 5 6 7 8 9 10 11 |
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress |
リダイレクト処理後
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}[R=301,L] </IfModule> # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress |
もしWordpressが500エラーになっちゃった場合は下記のように書いてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}[R=301,L] </IfModule> # END WordPress |
301リダイレクトとは
301リダイレクトは、URLが恒久的に変更された場合に用いられる転送処理のステータスコードです。転送のステータスコードとして他に302リダイレクトがありますが、302リダイレクトは「一時的な転送」を表すものであり、その意味が異なります。
うーん、良くわからないですね。
簡単に301リダイレクトとは、ページの評価をそのまま旧ページから新ページに移すことなんですね。
何がいいのか?と言うと301リダイレクトすることによって、旧ページのSEOをそのまま新ページに引き継げるのです。
ずーと作ってきたページをドメインの問題や諸々の問題で新ページにうつさなければならない。その時に,301リダイレクトをするとSEOをほぼ引き継げるのです。