2006年1月29日(日) 23時39分14秒 [Web関連]
動的なページを静的なページのように見せる
CGIやPHPなどで動的に生成しているページを、一見、静的なページのように見せる方法はいくつかあります。ファイル名をindex.cgiにする方法や、.htaccessファイルでファイル名が省略された場合にアクセスするファイルを指定する方法、mod_rewriteを使う方法などが挙げられます。
--- --- ---
CGIやPHPなどで動的に生成しているページは、HTMLなどの静的なページと比べて、検索エンジンに登録されにくいようです。理由は、動的に生成してんだから、同じURLで同じ内容が参照できるとは限らんからとか、パラメータがちょっと異なってても返されるのは同じ内容である可能性があるからとか、まあそんなとこでしょう。
実際には、パラメータの数が少なければ、ちゃんと拾ってくれるみたいですけどね。
私が管理している某所のフォーラム(BBS)も、1つ1つの投稿を単独で参照するためには、3~4個のパラメータが必要なんだけど、それでもちゃんと登録されてたし。(@Yahoo!)
Googleは、「パラメータの数が少なければ登録される」みたいなことをWeb上で公言してたと思いますが、Yahoo!も同様にパラメータの数が数個なら登録してくれてるようです。
というわけで、まあ、あんまり気にしなくてもいいかも知れませんが、それでもやはり、動的に生成しているページであると見せたくない場合、次のような方法があります。
まず、全くどんな設定もしたくない場合。^^;
CGIのファイル名を index.cgi にしておけば、ディレクトリ名だけでそのCGIにアクセスできる可能性があります。^^;
まあこれは、サーバがどう設定されているかに寄るんですけど、index.html がなくて、 index.htm もない場合、index.cgi を置いておけば、それが採用される可能性はあります。
次に、ディレクトリ名だけが指定された場合にアクセスされるファイル名を、自分で指定する方法。
これは、.htaccessファイルが利用可能でないといけませんが、それを使えば簡単に設定できます。
こんな感じで書いておけば、まず、index.cgi が探され、なければ index.shtml、それもなければ index.html、それもなければ index.htm が読まれます。それもない場合、ディレクトリ内のファイル一覧が表示されるか、もしくは、403エラーになります。
もちろんファイル名は index 以外でも構わないので、
とか書いておけば、moemoe.cgi にアクセスされます。
この方法だと、CGIのファイル名を省略してCGIにアクセスできますが、パラメータがないと表示できない内容を表示させるには、やはりパラメータの指定が必要になるわけで、完全な解決策というわけではありません。
完璧に静的に見せるには、やはり、mod_rewriteを使う必要があるでしょう。
mod_rewriteを使って、例えば次のように書いてみると…
RewriteRule ^(.+)-(.+)-(.+).html$ /hogehoge.cgi?page=$1&mode=$2&style=$3 [L]
…これだと、一見、拡張子.htmlのファイルにアクセスしているように見えて、実は内部ではhogehoge.cgiが実行されている…ということにできます。
表示上= http://www.example.com/moemoe-sakura-tan.html
↓
実際= http://www.example.com/hogehoge.cgi?page=moemoe&mode=sakura&style=tan
…のような感じで。
これなら、どんなパラメータでCGIを実行させる場合でも、外から見たら、ただのHTMLファイルにアクセスしているように見えます。
◆mod_rewriteモジュールを使ってURLを書き換えたい(2006/01/26)
この日記へのコメントはお気軽に! コメント数:0 トラックバック数:0
| « リモートデスクトップでクリップボードの共有も可能 |
前後のエントリ < 旧 / 新 > | ゆびさきミルクティー 第6巻 » |
このエントリーへのトラックバックURLを表示するにはここをクリック
※スパム防止のため、トラックバックURLは別ウインドウで表示します。(JavaScriptが有効でないと表示されません。)
コメント数: 0件