www有り無しをhtaccessなどで設定、無限ループしちゃった

4月 5, 2016

≪≪この記事をすべて読むには約 4 分かかります≫≫

昔のウェブサイトは、「ワールドワイドウェッブ」だよ、と示すために必ずURLの最初にwww.がついていました。最近は、どちらかというとついていないほうが入力しやすいですし好みです。

ドメイン名を取得すると、サブドメイン名は基本的に使い放題です。例えば当サイトだとwww.tek2tech.comだけではなくwWWwwwwW.tek2tech.comだって使えます。さらに、何もいじらないと「www」の場合だけ特別扱いですべてがサブドメインなしのページを参照してくれたりします。

上手くカノニカルURLを設定できていればよいですが、そうでない場合は誤作動や検索エンジン流入に悪影響を及ぼすことがあるので、どちらかに統一しておくほうが望ましいです。

URL転送

一番簡単な方法は、Apache系サーバーの場合は.htaccessというテキストファイルを編集することです。

詳しいサイトが多いので助かるのですが、記載方法がトリッキーでいつも四苦八苦します。

よくある設定

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

で、何故かこれが無限ループを起こしたりするのでよくわかりません。いつも無限ループになるわけでもなく、CMSの設定を少しいじったら治ったり、SSLを設定した瞬間におかしくなったり、わけがわかりません。分かる人には明快なのでしょうが、私にはさっぱりです。

成功例1

RewriteCond %{HTTP_HOST} ^([^.]+\.)+tek2tech\.com [NC]
RewriteRule ^/?$ "http:\/\/tek2tech\.com\/" [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.tek2tech\.com
RewriteRule (.*) https://tek2tech.com/$1 [R=301,L]

非SSLサイトです。Joomlaです。

成功例2

.htaccess設定なし

当サイトです。WordPressの設定で強制しています。「設定→一般設定→サイトアドレス・WordPressアドレス」を設定すれば.htaccessに書いていなくても統一出来ます。

成功例3

RewriteCond %{HTTP_HOST} ^www\.tek2tech\.com$
RewriteRule ^.*$ https://tek2tech.com/%{REQUEST_URI} [R=301,L]

Joomla!のSSLサイトです。試行錯誤でたどり着きましたが、なぜこれで動くのかが・・・・わかりません。まあ結果オーライ・・・