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回まで
  • 登録:
  • 終了:2018/11/23 10:24:42
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

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

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

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

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

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

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