http://www.test.com/123/test.php?NUMBER=456
このURLを以下のようにmod_rewriteしたいです。
http://www.test.com/test.php?ID=123?NUMBER=456
このような正規表現はどう書けばいいでしょうか。
http://www.test.com/123/test.php
を
http://www.test.com/test.php?ID=123
にするには、
RewriteRule ^/(.*)/test.php$ test.php?ID=$1 [L]
で出来ました。ここから先がわかりません
皆様よろしくお願いいたします。
クエリ文字列(「?」以降)をくっつけるには、RewriteRuleにQSAフラグをくっつけるだけで大丈夫です。
RewriteRule ^/(.*)/test.php$ test.php?ID=$1 [L,QSA]
http://wiki.bit-hive.com/tomizoo/pg/mod_rewrite%20-%20QSA%A5%D5%...
こんな感じでは。
RewriteRule ^/(.*)/test.php$ test.php?ID=$1 [QSA,L]
ありがとうございます。無事に出来ました。
最後につける[L]は特に意味は無いと思ってたのですがそういうわけじゃないのですね。
クエリ文字列(「?」以降)をくっつけるには、RewriteRuleにQSAフラグをくっつけるだけで大丈夫です。
RewriteRule ^/(.*)/test.php$ test.php?ID=$1 [L,QSA]
http://wiki.bit-hive.com/tomizoo/pg/mod_rewrite%20-%20QSA%A5%D5%...
解説までありがとうございます。
こんなに簡単に出来るとは知りませんでした。
助かりました。
このような場合は、2つの情報をそれぞれマッチさせるのがよいのでは無いでしょうか。
RewriteRule ^/(.*)/test.php(.*)$ test.php?ID=$1$2 [L]
(実験できてないですが、これでいいのでは?)
参考になるかどうか分かりませんが、次のような.htaccessを作成して運用しています
<<# BEGIN GIGAX_CNTL
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?\~gigax/gigax\.jp/item([0-9]+)\.html$ /\~gigax/gigax\.jp/index.php?cmm=410&pmkey=$1 [L]
RewriteRule ^item([0-9]+)\.html$ index.php?cmm=410&pmkey=$1 [L]
RewriteRule ^shop([\w0-9]+)\.html$ index.php?cmm=3&pmkey=$1 [L]
RewriteRule ^enq([\w0-9]+)-([\w0-9]+)\.html$ enq.php?n=$1&mode=$2 [L]
RewriteRule ^enq([\w0-9]+)\.html$ enq.php?mode=$1 [L]
RewriteRule ^blog/new/?$ /blog.php?cmm=9 [L]
RewriteRule ^blog/([0-9]+)/pn([0-9]+)/?$ /blog.php?cmm=20&bno=$1&pn=$2 [L]
RewriteRule ^blog/([0-9]+)/([0-9]{4})-([0-9]{2})-([0-9]{2})/?$ /blog.php?cmm=22&bno=$1&date=$2-$3-$4 [L]
RewriteRule ^blog/([0-9]+)/back/([0-9]+)/([0-9]+)/?$ /blog.php?cmm=81&bno=$1&nowyear=$2&nowmonth=$3 [L]
RewriteRule ^blog/([0-9]+)/next/([0-9]+)/([0-9]+)/?$ /blog.php?cmm=82&bno=$1&nowyear=$2&nowmonth=$3 [L]
RewriteRule ^blog/([0-9]+)/back/?([0-9\/]+)$ /blog.php?cmm=20&bno=$1 [L]
RewriteRule ^blog/([0-9]+)/next/?([0-9\/]+)$ /blog.php?cmm=20&bno=$1 [L]
RewriteRule ^blog/([0-9]+)/([0-9]+)/?$ /blog.php?cmm=21&bno=$1&kno=$2 [L]
RewriteRule ^blog/([0-9]+)/?$ /blog.php?cmm=20&bno=$1 [L]
RewriteRule ^blog/?$ blog.php [L]
RewriteRule ^sevttop\.html$ sevt.php [L]
RewriteRule ^sevt([0-9]+)\.html$ sevt.php&cmm=1&sevtmno=$1 [L]
</IfModule>
# END GIGAX_CNTL
回答ありがとうございます。
今回は上のお二方の方法がシンプルだったのでそちらにしました。
解説までありがとうございます。
こんなに簡単に出来るとは知りませんでした。
助かりました。