人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPから自動作成したウェブページのURLについて

こちらのページ
http://www.phppro.jp/qa/2667

質問者さんは自己解決されたようですが、同じところでつまずいています。
どのように自己解決されたのでしょうか?
やり方、考え方を教えてください。
おそらく簡単な事だとは予想できるのですが、いまひとつわかりません。

例を挙げると、こちらのサイトのように、データベースに登録した任意の数字(このサイトの場合は証券コード(ID))をurlとしてページを作成したいのです。

●質問者: jamis
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● だわかき
●20ポイント

以下の回答の通りやるのが定石です。
http://www.phppro.jp/qa/2667#10606

http://example.jp/168024.php へのアクセスを、http://example.jp/hoge.php?id=168024 へジャンプさせてやります。hoge.phpは、与えられたIDに基づいて商品情報を表示するスクリプトだとします。

WebサーバがApacheなら、httpd.confまたは.htaccessに以下のようにmod_rewrite を定義します。

RewriteEngine On
RewriteRule ^/([0-9]+)\.php$ /hoge.php?id=$1

jamisさんのコメント
ありがとうございます。

2 ● holoholobird
●20ポイント

これはPHPではなく、APACHEのrewriteの話になります。
rewriteというのは、たとえば
http://www.com/aaa/1234.php
にアクセスしたときに、このURLを自動で
http://www.com/aaa.php?id=1234
などと書き換え(rewrite)る機能のことです。

ある人がhttp://www.com/aaa/1234.phpをクリックすると、あなたのサーバーにあるAPACHEが、aaa.phpにid=1234を渡します。
PHPがaaa.phpにid=1234を渡した結果を計算して、APACHEに返します。
APACHEは、その結果を画面に表示します。

ですのでこういうURLの操作を行うには、APACHEの設定が必要です。


jamisさんのコメント
ありがとうございます。

3 ● tezcello
●60ポイント ベストアンサー

> 質問者さんは自己解決されたようですが...
> どのように自己解決されたのでしょうか?
質問サイトは、質問者の為だけにあるのではなく同じ(ような)疑問を抱いた多くの第三者の為にもあるのだ、という事が理解できていないとこういう残念な事に...


> データベースに登録した任意の数字をurlとしてページを作成したい
特定パターンの URL でアクセスされた場合、データベースからデータを引き出す等してページデータを動的に作成してブラウザへ返してやる
というようにすればお望みのモノが出来ます。

はてなの質問ページも同じようになっていますよね?


Apache ウェブサーバには、アクセスされた URL を(こちらの都合の良いように)書き換えた状態でアクセスされたものであるように細工する仕組み「ReWrite モジュール」が用意されています。
本家のマニュアルをご一読ください。
http://httpd.apache.org/docs/2.4/rewrite/
http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

以前は日本語に訳されたページ(バージョンは1.3でしたが)があったと思いますが、もう見当たらなくなっていますね...
「apache mod_rewrite」でググれば日本語のモノも見つかると思います。
使い方なども...

流れとしてはこんな感じです。
特定のパターン(例えば先頭から末尾まで数字ばっかり)でのアクセスは、
データベースからデータを引き出すスクリプト(hoge.php とします)にその数字をパラメートとして付けて渡します。
スクリプトはパラメータの値を使って必要なデータを生成して書き出す。

http://example.com/0123456/
↓(mod_rewrite で書き換える)
http://example.com/hoge.php?id=0123456
(以下は普通のPHPスクリプトと同じ)
hoge.php で、$_GET['id'] という変数に 0123456 が格納されているので、これを使ってデータを引き出し、ページデータを生成して出力する


mod_rewrite を使う事が許されているレンタルサーバなら、あまり考えずに .htaccess に書換のルールを書いてしまえばよい(パーミッションが問題になる場合もあったよな)ですが、VPSを含む専用サーバなどでは FileInfo の上書きを許可が必要ですのでお忘れなく。
__設定忘れ、書式不良、再起動忘れ等で全然機能しない...
__というのをよくやりました...orz

mod_rewrite についてはよくお調べください。
どんな URL でアクセスして欲しいかや、ファイル(.htaccess と 実行するスクリプト)の配置などで微妙に記述が変わります。
__仮想の実機環境を構築してのテストがお勧めです。


jamisさんのコメント
ありがとうございます。 まだトライしていませんが、このやり方を調べればなんとかできそうですね。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ