パソコン情報

WWW有無とHttpsで統一(.htaccess設定)

wordpressでサイトの準備ができて、SSL化もして、httpsにて接続ができるようになりました。

しかし、GoogleAdsenseでは、wwwがあるサイトと無いサイトの2つが自動判別されました。XSERVERなどは、wwwの有無をサーバのコントロールパネルで変更できるので簡単だったのですが、さくらインターネットの場合はちょっとだけ苦戦したので、ついでに勉強がてらブログにしてみました。

.htaccessの変更

デフォルトの.htaccessの内容が下記のようになっています。

すでに、https://にリダイレクトの設定になっています。

SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,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

これに、www有無の統一するのに修正を加えます。

変更する部分は、下記の部分だけです。

SetEnvIf Request_URI ".*" Ngx_Cache_NoCacheMode=off
SetEnvIf Request_URI ".*" Ngx_Cache_StaticMode

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$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

www有の場合

www有の場合は、下記の1行だけ変更すればOKです。

RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

    ↓     ↓

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

.htaccessの勉強

ついでに、.htaccessの勉強をしてみましょう。

.htaccessは、WEBサイトをコントロールする設定ファイルだってことは知っていましたが、中身の意味がわかりません。

今回、私が取り上げた内容は、リダイレクト(URLの住所を自動で変更する)を取り上げましたが、ページに制限をかけたり様々な設定をすることが可能です。

一つづつ記述の意味を調べて行ってもいいのですが他のサイトに丁寧な解説がされておりますので参考リンクをまとめておきます。

WordPressのhtaccessとは?用途から活用法まで徹底解説

.htaccess の使い方・設定方法

.htaccess 設定まとめ

.htaccess編集注意点

この.htaccessをいじるとWEBサイトがいきなり見られなくなり、サーバーエラーになっている時があります。

なんど、見直しても.htaccessの内容は間違っていません。

そんな時は、文字コードや改行コードを疑ってみることも重要です。

.htaccess の文字コードはUTF-8(BOM無し)、改行コードはLFを設定し、ファイルの最終行には空行を入れる必要があります。ただし .htaccess が日本語などの全角文字を含まず、半角英数字だけである場合は文字コードは Shift-JIS や EUC-JP などでも問題ありません。文字コードや、改行コードが誤っている場合は、500 internal server error が発生するため注意が必要です。

案外、Windowsのメモ帳などで編集しているとうっかり文字コードや改行コードが間違ってしまっていたりする時があります。

ルートにhttps://でリダイレクトした下位ファルダを除外

 

ホームページのルートにhttps://でリダイレクトした下位ファルダを除外したい場合がある。

あるレンタルサーバーでは、下位フォルダにドメインを付与している場合があり、ルートをSSL化をしたとたんに、下位のフォルダにSSLにリダイレクトされて見れなくなるケースがある。

その場合、下位ホルダ内のhtsccessに下記を入れる。

 

RewriteEngine off