( ) Apache

.htaccessでSSL/WWWありなしリダイレクト

URLの正規化のためのリダイレクト設定です。まずはウェブルートに.htaccessファイルがあるか確認し、無ければ作成します。もし.(ドット)から始まるファイルが作成できない場合は、いったん別名で作成してからアップロード後に名前変更してください。

既に.htaccessが存在しているとき、 下記のコードが無い場合は、一番初めに追加しておきましょう。

RewriteEngine on
RewriteBase / 

注意点

  • 上記のコードよりも下にリダイレクトコードを書いていきます。
  • .htaccessを置くディレクトリがウェブルート以外のならRewriteBaseもあわせて変更しておいた方が分かりやすいかもしれません。例)blogディレクトリに設置するなら、RewriteBase /blog/
  • WordPress が設置されているサイトでは WordPress 起動のためのコードがすでに書かれているはずです。リダイレクトコードはその記述よりも上に書かなければ動作しません。

SSL(https://~)リダイレクト

WWWなし

# SSLリダイレクト (wwwなし)
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ https://sample.com/$1 [R=301,L]

WWWあり

# SSLリダイレクト (wwwあり)
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.sample.com/$1 [R=301,L]

URL正規化(wwwありなし・indexなし)

wwwあり

# www あり
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.sample.com/$1 [R=301,L]

wwwなし

# www なし
RewriteCond %{HTTP_HOST} ^www\.
RewriteRule ^(.*)$ http://sample.com/$1 [R=301,L]

index.(html|cgi|php) なし

# index.(html|cgi|php) なし
RewriteRule ^(.*)index\.(html|cgi|php)(\?.*)?$ http://sample.com/$1$3 [R=301,L]

/index.html?key=value のようなパラメータも引き継ぎます。ほかの拡張子もなしにしたい場合は、() の中に | で区切って追加してください。

関連記事

Leave a Reply