日々の生活で考えたこと、タルパとの日常などを記していきます。

おのれgoogle……

存在しないurlを検索結果に出さないで

google検索で自サイトのタイトルを入力したらどのページが先頭に出るのか知りたくて、
打ってみた結果、
https://trp3l.com/index.php/about.html
が表示された。
index.php/about.html てなんやねん。
about.htmlなんていうファイルはルートに存在しないし、
ファイル名の後にさらにファイル名がくるのも謎だし、
おまけにこのurlにアクセスするとcssが読み込まれないせいで
モバイルライクなサイトじゃないとか勝手に評価されるし、
踏んだり蹴ったりだった。
こんなんじゃ誰もこのブログにたどり着けないじゃないか……。
ということで.htaccessに以下の文を追加した。

RewriteEngine on #文頭で既に記述済な場合は書かなくてよい。

RewriteCond %{THE_REQUEST} ^.*/index\.php/
RewriteRule ^(.*)$ https://%{HTTP_HOST} [R=301,L]

先頭に RewriteCond とある行がリダイレクト条件。
%{THE_REQUEST} は
ユーザーがサーバに対して行ったリクエストの内容。
今回の場合は ”GET trp3l.com/index.php/about.html HTTP/1.1″ といった感じか。
これに /index.php/ という文字列が含まれるかどうかが
^.*/index\.php/ の部分。
^は先頭文字が条件式と一致しているかどうか、
.*はワイルドカード、
.は特殊な用途があるので\.と書いてエスケープする。


二行目の RewriteRule は、どういった処理をするかの文。
^(.*)$ は条件に一致した全てのurl($は^と対の意味で、文末の文字が条件と一致しているかどうか)
%{HTTP_HOST} はこのサイトでは trp3l.com

つまり、条件「index.php/ がurlに含まれる」にひっかかる全てのリクエストをホームへリダイレクトする
という記述を行った。
正しい記述をしたのにローカル環境だとうまく動作しなかったので、
仕方なく本番環境でぶっつけ勝負したが、正しく動作してくれてよかった。
.htaccessの詳しい書き方は、
英語だがAPACHE公式が詳しい。
まだまだ読んでない箇所がたくさんあるので、もっとスマートな書き方があったかもしれない。

コメント



管理人だけに公開する

非公開かつ返信をご希望の方は
コメント欄にメールアドレスをご記載ください。