WordPressサイトのURL正規化+常時SSL化まとめ
昔はURL正規化だけでよかったですが、今は常時SSLも含めて、サイト公開時にURL正規化処理が必要になりました。
URL正規化の詳細については別記事にまとめていますので、そちらを参考にお願いします。
先日、Wordpress+常時SSLで、URL正規化を行ったのでまとめてみます!
※当サイトのURLを使って解説します。
—————————–
1.まずは、自分のサイトの正規なURLを決めます!
www有りなのか、なしなのか?
好みによりますが、私はできるだけ短い方が好きなので、wwwは基本的に付けません。
この正規なURLは、
SSL証明書を取得する際に設定するCommon Name(コモンネーム)と同じURLにします。
逆に言うと、
正規なURLをコモンネームにして、SSL証明書を発行しましょう。
2.Wordpress内で設定をします。
正規なURLを決めたら、それをWordpressに設定をします。
SSLの取得が完了している場合は、https://で設定しましょう。
※wwwなしを正規なURLとする場合
3.リダイレクト設定を行います。(その1)
WordPressを設置したディレクトリに”.htaccess”というデータがあると思うので、下記のように追記します。
◆Wordpressにて自動的に記述された下記の上に、
1 2 3 4 5 6 7 8 9 10 |
# 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 |
◆下記を追記します。
※” https://nov.tokyo/index.html”、” http://nov.tokyo/index.html”を”https://nov.tokyo/”へリダイレクト。
1 2 3 4 5 6 |
#URL正規化1 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ https://nov.tokyo/$1 [R=301,L] </IfModule> |
参考:www有に正規化する場合
1 2 3 4 5 6 |
#URL正規化1 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ https://www.nov.tokyo/$1 [R=301,L] </IfModule> |
4.リダイレクト設定を行います。(その2)
.htaccessに下記を追記します。
◆下記の記述の下に、
1 2 3 4 5 6 7 8 9 10 |
# 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 |
◆下記を追記します。
※” https://www.nov.tokyo/”、” http://www.nov.tokyo/”を”https://nov.tokyo/”へリダイレクト。
1 2 3 4 5 6 |
#URL正規化2 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.nov\.tokyo$ RewriteRule ^(.*)$ https://nov.tokyo/$1 [R=301,L] </IfModule> |
参考:www有に正規化する場合
1 2 3 4 5 6 |
#URL正規化2 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^nov\.tokyo$ RewriteRule ^(.*)$ https://www.nov.tokyo/$1 [R=301,L] </IfModule> |
5.最後に常時SSL化します。
.htaccess下部へ追記します。
1 2 3 4 5 6 |
#常時SSL化 http→https <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule> |
ここでハマったのですが、
取得したSSL証明書が”SANs”対応であれば、www有となしの両方のURLにてSSL証明書を設定しておく必要があるようです。
この対応をしていないと、URL正規化の過程でSSL証明書エラーが起き、正常にアクセスができません。
さくらインターネットやロリポップ、エックスサーバーなど有名どころは対応しているみたいです。
CPI-SSLはSANs未対応のようです。
まとめ 当サイトURLの箇所を自サイトのURLへ置き換えて確認してください。
※wwwなしへ正規化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#URL正規化1 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ https://nov.tokyo/$1 [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 #常時SSL化 http→https <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule> #URL正規化2 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.nov\.tokyo$ RewriteRule ^(.*)$ https://nov.tokyo/$1 [R=301,L] </IfModule> |
※www有へ正規化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#URL正規化1 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ https://www.nov.tokyo/$1 [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 #常時SSL化 http→https <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule> #URL正規化2 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^nov\.tokyo$ RewriteRule ^(.*)$ https://www.nov.tokyo/$1 [R=301,L] </IfModule> |
何かの参考になれば幸いです。