http://www.hogehoge.com/test1/jirei_search/mansion/
http://www.hogehoge.com/test1/jirei_search/mansion/01/
http://www.hogehoge.com/test1/jirei_search/mansion/02/03/
と、mansionをパラメーターとして渡す場合と
mansionと01を渡す場合
mansionと02と03を渡す場合
で.htaccessでmod_rewriteをためしていますが、
3つパラメーターをわたすのがどうしてもうまくいきません。
ソースはこのように書きました。
DirectoryIndex index.php
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9A-Za-z]+)\.html$ index.php?id1=$1 [L]
RewriteRule ^/test1/jirei_search$ /test1/jirei_searh/ [L]
RewriteRule ^([^/]+)/$ index.php?id1=$1
RewriteRule ^([^/]+)/([^/]+)/$ index.php?id1=$1&id2=$2
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ index.php?id1=$1&id2=$2id3=$3 [L]
http://www.hogehoge.com/test1/jirei_search/mansion/02/03/
へのアクセスで
jirei_searchの中にある.index.phpに3つ以上のパラメータをわたすにはどうしたらよいのでしょうか?4つ5つとわたしてみたいとおもったいるのですが。
test1/jirei_search/の後に再度リライトすることを前提にしているみたいですが、
Lフラグの付け方がおかしいように思います。
わかりやすく書き直してみました。
DirectoryIndex index.php Options +FollowSymLinks RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # /mansion.html -> /test1/jirei_search/mansion/ RewriteRule ^([0-9A-Za-z]+)\.html$ test1/jirei_search/$1/ # /test1/jirei_search/mansion/ RewriteRule ^test1/jirei_searh/([^/]+)/$ index.php?id1=$1 [L] # /test1/jirei_search/mansion/01/ RewriteRule ^test1/jirei_searh/([^/]+)/([^/]+)/$ index.php?id1=$1&id2=$2 [L] # /test1/jirei_search/mansion/01/02/ RewriteRule ^test1/jirei_searh/([^/]+)/([^/]+)/([^/]+)/$ index.php?id1=$1&id2=$2id3=$3 [L]
これだと、パラメータが増えると書き足しが大変なので、
さらにパラメータを増やす可能性がある場合は、PHP側で処理(ルーティング)したほうがいいかもしれません。
見ていて思いついた程度の回答なので、ポイントは結構です。
#私も最近、mod_rewrite で苦戦しています・・・
これだと、2件目以降がマッチしないような?
ここのところは、
> RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ index.php?id1=$1&id2=$2id3=$3 [L]
RewriteRule ^([^/]+)/(.*)/(.*)/$ index.php?id1=$1&id2=$2id3=$3 [L]
という感じでいきませんでしょうか。
2件目以降のところ
/([^/]+)/
となっていると スラッシュが出現した後、スラッシュから始まった文字 という検索になるので、
/test1/jirei_search/mansion/02//03/ という形じゃないとマッチしないような気がします。
回答の中に「jirei_searh」になってしまっている部分がありました。
「jirei_search」に直してもだめでしょうか?
カテゴリのトップページがtest1というフォルダにしてましたが、.htaccessはjirei_searchにあったのでうまく行かなかった模様です。下記ソースパスにtest1をつけくわえるとやはり動かなくなります。教えていただいたとおり、パラメーターを増やす場合はPHP側の処理にしようかと思います。しかしながら本当に難しかったです。最終がこのようなソースです。
DirectoryIndex index.php
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule ^jirei_search/([0-9A-Za-z]+)\.html$ jirei_search/index.php?id1=$1 [L]
RewriteRule ^jirei_search/([0-9A-Za-z]+)\.html$ jirei_search/$1/ [L]
# RewriteRule ^jirei_search/([^/]+)/$ jirei_search/$1 [L]
RewriteRule ^jirei_search/([^/]+)/$ jirei_search/index.php?id=$1 [L]
RewriteRule ^jirei_search/([^/]+)/([^/]+)/$ jirei_search/index.php?id1=$1&id2=$2 [L]
RewriteRule ^jirei_search/([^/]+)/([^/]+)/([^/]+)/$ jirei_search/index.php?id1=$1&id2=$2&id3=$
3 [L]
RewriteRule ^jirei_search/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ jirei_search/index.php?id1=$1&id2=
$2&id3=$3&id4=$4 [L]
www.hogehoge.com/にあるものとして書いていました。
RewriteRuleは、RewriteBaseを指定していない場合は.htaccessがある場所が基準になるので、
test1をつけるとうまくいかなかないのはそういうことだったようですね。
直接の回答にはならず申し訳なかったですが、微力ながらお役に立てたのなら幸いです。