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


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

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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/12/17 15:30:53
  • 終了:2011/12/24 15:35:03

回答(2件)

id:kodairabase No.1

kodairabase回答回数661ベストアンサー獲得回数802011/12/17 16:20:38

ポイント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

y-kawaz回答回数1420ベストアンサー獲得回数2252011/12/17 17:50:32

ポイント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
    "03"を"3"に変換がキモですよね。

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

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

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

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

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

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