mod_rewriteの正規表現の書き方に関する質問です。


以下のURLから、
http://xxxxx.com/dir1/dir2/dir3/index.html

最後の「dir3」だけを抜き出す正規表現の書き方がわかりません。。。

以下のように書いてみたところ、$1には「dir2/dir3」が抽出されてしまいます。
RewriteRule /(.*?)/index.html$ index.php?dir=$1


なぜ「dir1/dir2/dir3」じゃないんだろう。って疑問もありますが。。w

「dir3」を抽出する正規表現の書き方を教えてください。

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2018/11/22 18:30:58
  • 終了:2018/11/23 10:24:42

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4778ベストアンサー獲得回数20532018/11/22 22:58:48

ポイント100pt

>なぜ「dir1/dir2/dir3」じゃないんだろう。って疑問もありますが
マッチさせる URL は、ドメインの後の "/" を含まないんです。
"dir1/dir2/dir3/index.html" がマッチの対象なので、ルールの頭の "/" が効いてるから dir1 が外れます。

で、最後の dir3 だけを切り出す方法ですけれど、↓みたいな感じでどうでしょう。

RewriteRule .*/([^/]*)/index.html$ index.php?dir=$1
id:tomohirof

ありがとうございました!
意図した通りに動きました!!

2018/11/26 10:20:28

コメントはまだありません

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

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

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

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