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


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

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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/05/06 22:27:17
  • 終了:2013/05/08 14:25:07

ベストアンサー

id:tezcello No.3

tezcello回答回数457ベストアンサー獲得回数682013/05/07 00:01:48

ポイント60pt

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


> データベースに登録した任意の数字を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 と 実行するスクリプト)の配置などで微妙に記述が変わります。
__仮想の実機環境を構築してのテストがお勧めです。

id:jamis

ありがとうございます。

まだトライしていませんが、このやり方を調べればなんとかできそうですね。

2013/05/08 14:23:14

その他の回答(2件)

id:dawakaki No.1

だわかき回答回数797ベストアンサー獲得回数1222013/05/06 22:46:13

ポイント20pt

以下の回答の通りやるのが定石です。
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
id:jamis

ありがとうございます。

2013/05/08 14:23:26
id:holoholobird No.2

holoholobird回答回数574ベストアンサー獲得回数1042013/05/06 22:48:53

ポイント20pt

これは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の設定が必要です。

id:jamis

ありがとうございます。

2013/05/08 14:23:36
id:tezcello No.3

tezcello回答回数457ベストアンサー獲得回数682013/05/07 00:01:48ここでベストアンサー

ポイント60pt

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


> データベースに登録した任意の数字を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 と 実行するスクリプト)の配置などで微妙に記述が変わります。
__仮想の実機環境を構築してのテストがお勧めです。

id:jamis

ありがとうございます。

まだトライしていませんが、このやり方を調べればなんとかできそうですね。

2013/05/08 14:23:14

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません