• ベストアンサー

htaccessでmod_rewrite

htaccessに下記のように記述しました。 RewriteEngine on RewriteRule ^([0-9A-Za-z_]+)/$ index.php?p=$1 [L] RewriteRule ^([0-9A-Za-z_]+)/([0-9A-Za-z_]+)/$ index.php?p=$1&m=$2 [L] RewriteRule ^([0-9A-Za-z_]+)/([0-9A-Za-z_]+)/([0-9A-Za-z_]+)/$ index.php?p=$1&m=$2&y=$3 [L] RewriteRule ^sample/test/([0-9A-Za-z_]+)/$ sample/test.php?id=$1 [L] すると 「http://www.○○○.jp/index.php?p=●」 は 「http://www.○○○.jp/●/」 「http://www.○○○.jp/index.php?p=●&m=△」 は 「http://www.○○○.jp/●/△/」 「http://www.○○○.jp/index.php?p=●&m=△&y=■」 は 「http://www.○○○.jp/●/△/■」 でアクセスできました。 が、 「http://www.○○○.jp/sample/test.php?id=★」 は 「http://www.○○○.jp/sample/test/★/」 でアクセスできません。 おそらく、 「http://www.○○○.jp/sample/test/★/」を 「http://www.○○○.jp/index.php?p=sample&m=test&y=★」 として認識しているためだと思いますが、 対策がわかりません。 このような場合は、どう対処すればよいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

順番を変えたらどうでしょうか 4番目のルールを1番上に持ってくる

hukazuo
質問者

お礼

ありがとうございます。 無事解決できました。

その他の回答 (1)

  • level2012
  • ベストアンサー率63% (12/19)
回答No.1

mod_rewriteは使った事もないですけど、 質問のコードで上からルールを見ていくと >「​http://www.​○○○.jp/sample/test.php?id=★」 >は >「​​http://www.​○○○.jp/sample/test/★/」 >でアクセスできません。 testディレクトリっておかしくないですか?

hukazuo
質問者

お礼

上の三行を削除するとうまく表示されるので、 ディレクトリが間違っているわけではなかったです。

関連するQ&A