.htaccessのRewriteRuleの書き方について教えてください。


/menu/goods/data.php?id=1234567890&category=3

/menu/goods/03/1234567890.html
としてアクセスさせたいです。
category=3の部分は1ケタ〜2ケタ、idの部分は10ケタ固定です。

お知恵をお貸しください。
どうぞ宜しくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/12/24 15:35:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:kodairabase No.1

回答回数661ベストアンサー獲得回数80

ポイント100pt

このようにしてみてください。

RewriteEngine On
RewriteRule ^/menu/goods/data\.php\?id\=([0-9]{10})&category\=([0-9]{1})$ /menu/goods/0$2/$1  [R,L]
RewriteRule ^/menu/goods/data\.php\?id\=([0-9]{10})&category\=([0-9]{2})$ /menu/goods/$2/$1  [R,L]
id:y-kawaz No.2

回答回数1422ベストアンサー獲得回数226

ポイント100pt

.htaccessを置く場所によって変わります。

/menu/goods/.htaccessに書く場合

RewriteEngine On
RewriteRule ^(?:0([0-9])|([1-9][0-9]))/([0-9]{10})\.html data.php?id=$3&category=$1$2 [L]


/.htaccessに書く場合
RewriteEngine On
RewriteRule ^menu/goods/(?:0([0-9])|([1-9][0-9]))/([0-9]{10})\.html /menu/goods/data.php?id=$3&category=$1$2 [L]


httpd.confに書く場合(頭に/が付きます。逆に言うと.htaccessでは^/をつけるとマッチしないです)
RewriteEngine On
RewriteRule ^/menu/goods/(?:0([0-9])|([1-9][0-9]))/([0-9]{10})\.html /menu/goods/data.php?id=$3&category=$1$2 [L]

id:rouge_2008

間違えたので書き直しています。
categoryが一桁の時、アクセスするURLが「/menu/goods/01/~」「/menu/goods/02/~」「/menu/goods/03/~」...となるのでしたら、以下のようにするといいかも・・・

RewriteRule ^/?menu/goods/(?:0([1-9])|([1-9][0-9]))/([0-9]{10})\.html /menu/goods/data.php?id=$3&category=$1$2 [L]
2011/12/18 00:19:09
id:y-kawaz

id:rouge_2008 さんのアドバイスに従いちょっと直しました。指摘どもです!

2011/12/18 16:13:14
  • id:zero-uhura
    zero-uhura 2011/12/17 21:35:39
    "03"を"3"に変換がキモですよね。

    0?([1-9]{1,2}) みたいな感じ(やや甘めですが)。

    未検証なのでコメント欄にて

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

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

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

回答リクエストを送信したユーザーはいません