以前から当サイトのURL欄に統一感がないのを気にしていました。Nucleusを使ってて特にURL部分はカスタマイズしてなかったせいで、下記のどちらのURLでも表示可能になってしまうのです。
http://www.takehana.tv/cccc/index.php?itemid=1127
http://www.takehana.tv/cccc/?itemid=1127
どっちでも表示できるのはいいんですが、はてなブックマークやツイッターで記事が言及された場合、それぞれのURLでしか表示できないのが困ります。同じ記事への言及なのに、バラバラになってしまうわけですから。
そこで、.htaccessファイルに、RewriteEngine を記載して対応してみました。いろいろと苦労した点があるので、メモ代わりにそれらも書いておきます。
いろいろ苦戦しましたが、たぶんこれで良さそうです。
RewriteEngine on RewriteBase /public_html/cccc RewriteCond %{HTTP_HOST} ^www\.takehana\.tv RewriteCond %{REQUEST_URI} !^/cccc/index.php RewriteRule ^cccc/? http://www.takehana.tv/cccc/index.php$1 [R,L]
最初はwwwなしへのURLへリダイレクトするように記載してましたが、これだとwwwなしの画面とありの画面が混在したりして多々問題が発生したので、wwwありのURLでもリダイレクトできるように、3行目の除外条件を追加しています。
この除外条件がないと、「ページの自動転送設定が正しくありません。このアドレスへのリクエストに対するサーバの自動転送設定がループしています。Cookie を無効化したり拒否していることにより、この問題が発生している可能性もあります。」となってしまうのです。
今回いろいろ失敗した点をメモしておきます。
RewriteCond は(たぶん)必須。記載例でこれを書いてないサイトが殆どだったんで誤解してましたが、ないと動きません(少なくともウチのサイトでは)。
RedirectMatch permanent では?つきの場合にうまく処理ができないらしい。?と書くと何故か「%3f?」と二重に?がついてるかのようなURLへリダイレクトされてしまうし、\?とエスケープして書いてもダメ。そもそも出来ない可能性が高そう。
%{HTTP_HOST} で指定しているんだから、ホスト名以外を条件に書いても無意味。ccccまで条件に変えたら、そんなホスト無いから動くわけない。
まだ中途半端な対応な気もしますが、ひとまずこれで自分の望んだ挙動になったかなー、と満足したんでもう寝ます。疲れたー。
<追記>
何故か分からないんですが、この設定してると画像などが表示されなくなる不具合が生じているので、設定削除しました。気のせいか表示も遅かったような感じだったのが、すんなり表示されるようですし、パフォーマンス落ちてたんでしょうか。謎。
コメント