検索システムなど閲覧者が求める情報を動的に表示させるサイトでは、
http://masha.maakikaku.jp/index.php?mode=search&type=hiphop
こんな感じにURLへ?やら&やら引数がだらだらと付いていきます。
サーチエンジン対策上このままじゃあかんということで、
例えば上記のURLを下記の静的URLで表示させるようにしたい。
http://masha.maakikaku.jp/index/search/hiphop.html
これを実現する為には様々な方法があるようなのですが、
ベストの選択は Apache の mod_rewrite を利用する方法のようだ。
が、私が使う 「さくらのレンタルサーバでは、mod_rewriteが利用できない」
・・という情報をどこかで見て何も考えず違う方法でがんばったのだが、
やり終わった後に はっΣ(`Д´;) と思い出しました、
さくら、とりあえず今は mod_rewrite 使えるよね_|\●_
http://faq.sakura.ne.jp/wiki/wiki.cgi?.htaccess#i5
んあー・・なにやってんねんおれ・・一応折角やったのでメモ。。
.htaccess へ FilesMatch を設定し、
phpファイルで PATH_INFO を取得する方法です。
・環境
さくらのレンタルサーバ
Apache 1.3.37
PHP 5.2.1
・目的
サイトのindex.phpを表示させる際、下記の動的なURLを、
http://masha.maakikaku.jp/index.php?mode=search&type=hiphop
以下の静的なURLでもアクセス可能にする。
http://masha.maakikaku.jp/index/search/hiphop.html
■手順1 拡張子の無いパスがPHPとして動作するようApacheへ設定
index という文字を含むURLは、
そのマッチした箇所をPHPのファイルとして認識させるよう、
.htaccess へ以下のコマンドを追加。
<FilesMatch "^index$">
AddType application/x-httpd-php
</FilesMatch>
静的URLを生成したいphpファイルが複数ある場合は、
ひとつずつFilesMatchを設定していかなければならないようだ。
■手順2 PHP側で引数を取得処理
PATH_INFO で ~index/ 以降のURL部分を取得し、
「/」と「.」で $_SERVER["PATH_INFO"] を分割し $param へ代入するよう、
index.phpへ以下のような感じで仕込む。
$param = split("[/\.]", $_SERVER["PATH_INFO"]);
これで $param[0] に search が、$param[1] に hiphop が入る。
(因みに$param[2]には html が入ってる。いらんけど。)
●注意1
この処置を施すと、画像やCSSなどの相対パスがずれる。
URL如何においても表示するファイルをindex.phpへ設定できたものの、
http://masha.maakikaku.jp/index/search/
を基点とした相対パスになってしまうのだ。
パスの指定に絶対パスを使うことで問題は解決はするのだが・・、
相対パスのままどうにかする解決策は見つからなかった。
mod_rewriteを利用した方法だと、
この問題は発生しないようだ。。
●注意2
デフォルトでさくらのPHPは、CGI扱いとして動作している。
すると $_SERVER["PATH_INFO"] が使用できないらしい。
私の場合はPHP5を自分でインストールしたからか?普通に動いた。
もしPATH_INFOが取得できない場合は以下のサイトを参考。
→さくらインターネットとmod_rewriteでpukiwikiのSEO対策
●注意3
PATH_INFOに %2F が含まれていると404エラーが発生するらしい。
%2F は /(スラッシュ) のURLエンコードをかけた文字列。
これはApache設定の AllowEncodedSlashes が Off になっているのが原因。
解消するには以下のコードを追加しAllowEncodedSlashesを On にしてやる。
AllowEncodedSlashes On
おつかれさまでした_|\●_
・参考サイト
→技林TOP > 自宅サーバ構築メモ > mod_rewrite
→動的だけど静的なページの作成 (PATH_INFO)
→mod_rewriteでURLをpathinfoベースに変更
はてなブックマーク










コメント (2)
光回線に入れました。
SPEED 2.5 (speed.rbbtoday.com)
計測日時 : 2007年6月29日金曜日 20時49分16秒
下り(ISP→PC): 61.09Mbps
上り(PC→ISP): 37.01Mbps
投稿者: おじさん | 2007年06月29日 21:05
へーいいなー。会社で光ずっと使ってたら、
家のADSLもっさり感じるようになってきた。
俺も変えようかなそろそろ。。
・・って楽天でまたテレビかなんか買ったでしょw
投稿者: まさし | 2007年07月02日 10:34