にしし ふぁくとりー(西村文宏 個人サイト)

Presented by Nishishi via Movable Type. Last Updated: 2017/06/21. 12:29:52.

動的なページを静的なページのように見せる

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ファイルが利用可能でないといけませんが、それを使えば簡単に設定できます。

DirectoryIndex index.cgi index.shtml index.html index.htm

こんな感じで書いておけば、まず、index.cgi が探され、なければ index.shtml、それもなければ index.html、それもなければ index.htm が読まれます。それもない場合、ディレクトリ内のファイル一覧が表示されるか、もしくは、403エラーになります。

もちろんファイル名は index 以外でも構わないので、

DirectoryIndex moemoe.cgi

とか書いておけば、moemoe.cgi にアクセスされます。

この方法だと、CGIのファイル名を省略してCGIにアクセスできますが、パラメータがないと表示できない内容を表示させるには、やはりパラメータの指定が必要になるわけで、完全な解決策というわけではありません。

完璧に静的に見せるには、やはり、mod_rewriteを使う必要があるでしょう。
mod_rewriteを使って、例えば次のように書いてみると…

RewriteEngine on
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)

コメント

こんにちは★
mod_rewriteのことで僕も頑張ってみました!
同じく、さくらを使っているのですが、
サクラの場合は rewritebaseをいれないと動かないようですよ!
もうすでにご存知かもしれませんが・・・orz

投稿者 通りすがり : 2009年10月05日 13:25

RewriteRule ^([0-9]+)/(.+)/(.+)/$ bbs.cgi?page=$1&mode=$2&style=$3 [L]
た・ぶ・ん・ですけど
飛ばす先にルートディレクトリの/スラッシュが無いからですできないのは。絶対パスでは出来てるので…
/bbs.cgi?...

投稿者 プーポン : 2010年05月17日 22:30

コメント数: 2件

コメント投稿欄 この日記に対するコメント投稿を歓迎します。



※本文中にURLは書けません。(書くと投稿が拒否されますのでご注意下さい。)

※ご投稿頂いた内容は、掲載前に管理者が確認する設定にしている場合があります。たいていは数日以内には表示されるはずですので、気長にお待ち願います。m(_ _)m

著者紹介


にしし(西村文宏)

にししでございます。本書いたり記事書いたりしてます。あと萌えたり。著書5冊発売中です(Web製作系4冊+小説1冊)。著書や記事は「西村文宏」名義。記事は主にAll Aboutで連載。本の最新刊は2011年3月に発売されたライトノベルでございますよ。

Twitter:にしし/西村文宏
にしし/西村文宏 on facebook にしし/西村文宏 on mixi にしし/西村文宏 on Google+ フォローはお気軽に!

にしし(西村文宏)連絡先
☕ コーヒーをおごる

著書一覧と詳細

関連する記事など

※下記には、本サイト内外の関連記事などが8本くらい自動で表示されています。

にししふぁくとりー Sakura scope内限定での主要なカテゴリ

--- 当サイト内を検索 ---