[mod_rewrite] [php]動的URL→静的URLについて



http://catfrog.net/PHP/AV/AV_detail.php?navi=0&idol=19&query=%E9%80%A2%E4%B9%83%E3%81%86%E3%81%95%E3%81%8E

http://catfrog.net/PHP/AV/AV_detail/0/19/%E9%80%A2%E4%B9%83%E3%81%86%E3%81%95%E3%81%8E/
のような形で表示したいのですが.htaccessへなんと記述すればよいですか?

上記静的URLはあくまでも例なので別に上記の形にこだわりがあるわけでもなく、性的もとい静的に見えれば何でもOKです。

ご教示のほど、よろしくお願いします。。

回答の条件
  • 1人2回まで
  • 登録:2006/06/24 06:51:06
  • 終了:2006/06/24 08:35:02

ベストアンサー

id:wizemperor No.1

wizemperor回答回数379ベストアンサー獲得回数522006/06/24 07:27:32

ポイント60pt

以下を、「.htaccess」として保存して、「http://catfrog.net/PHP/AV/」へ転送すれば上手くいくと思います。

DirectoryIndex AV_detail.php

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^AV_detail/([0-9]+)/([0-9]+)/(.+)/$ AV_detail.php?navi=$1&idol=$2&query=$3

1行目:「http://catfrog.net/PHP/AV/」へのアクセス時は AV_detail.php にアクセスする。

2行目: mod_rewriteを有効にする。

3、4行目: 実際のファイル、ディレクトリが存在する場合はそれを表示。

5行目:正規表現にマッチするURLをrewriteする。


「navi」と「idol」は数字であることを想定していますが、その他の文字が入る場合には「([0-9]+)」→「(.+)」へ変えてやってください。

id:catfrog

すばやい回答ありがとうございます。実は同じ記述内容で他の方にも伺ったのですが、それだと何故かうまく行かないのです。。

AV.phpでURLクリック、あるいはアドレス欄に直接「http://catfrog.net/PHP/AV/AV_detail/0/19/%E9%80%A2%E4%B9%83%...」と入力しても反応なしなんですよ。サーバかphpの記述の問題なのかなあ。

今上記内容を.htaccessに保存してAV.phpからAV_detailへのURLリンクを「http://catfrog.net/PHP/AV/AV_detail/数字/数字/名前/」に変えてます。もしよろしければ「http://catfrog.net/PHP/AV/」から適当な名前をクリックしてみていただけますか?

他のページはうまく行ったのでmod_rewriteは機能してます。レンタルサーバ(ロリポ)のせいだというわけでもなさそうです。

エラーにならずにURLとしては表示されるところをみると、mod_rewriteは機能してるけれども、PHPの方で$_GET['navi']とかが上手く受け取れてないのかなあ。しかしサーバーでクエリの形に変えて読み取ってくれるはずですよね?何でだろう。

うまく行ったページ↓

http://catfrog.net/rakutenbooks/index.php

(これはブログツールの説明書どおりに設定してうまく行きました。)

ちょっとPHPの内容になると本来の質問からそれてしまうので深追いはしないつもりですが、なんらかここでは?というのがありそうでしたら伺いたく>各位

■追記:

超わかった!

既にあるファイルAV_detailと同じディレクトリ名にしたので勘違いされてるんだ。

_detailに変えたら上手く行きますた。ありがとうございます!

2006/06/24 08:34:10

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

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

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

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

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