4

1 回のキャプチャ ($1) から 2 回後方参照を使用しようとする (Apache htaccess ファイル内の) 書き換えルールがあります。

RewriteRule ^([A-Za-z0-9_-]+)/?$ $1.php?nav=$1

次のように、クエリ文字列が空のままになっているようです

example.com/new

のように書き直されています。

example.com/new.php?nav=

私が欲しいのは

example.com/new.php?nav=new

私の質問: 式で $1 を 2 回参照できますか?

アップデート:

mod_rewrite に関するApache のドキュメントには、書き換えルールの置換部分で何度でもキャプチャを参照できることが示されています。しかし、数日間試した後、私はそれを機能させることができませんでした. そこにあるオンライン正規表現テスターに​​合格するルールを取得しましたが、私のサイトにはありません。最終的に、より単純な書き換えルールを使用できるように、メニュー システムを再設計しました。

4

1 に答える 1

1

あなたが使用しているこの正規表現は間違っています:

^(A-Za-z0-9-_)$

範囲は角括弧でのみ許可され、+アクセサーを使用して複数の文字に一致させる必要があります。

RewriteRule を次のように置き換えます。

RewriteRule ^([a-z0-9_-]+)/?$ $1.php?nav=$1 [L,NC,QSA]
于 2012-12-20T19:10:28.263 に答える