1

書き換えルールで次の動作を作成しようとしています。

https://domain.com/admin/user/add      => /addedit.php?add=
https://domain.com/admin/user/add/     => /addedit.php?add=
https://domain.com/admin/user/add/123  => /addedit.php?add=123
https://domain.com/admin/user/add/123/ => /addedit.php?add=123
  • user変数です
  • add「追加」または「編集」のいずれかです。
  • 末尾のスラッシュは常に許可されます
  • 変数に割り当てられた (add|edit) の後のスラッシュの後には、さらに多くの文字列が存在する可能性があります

アクション ワード (add|edit) の後のオプションのスラッシュまでは問題ありません。それが、私の目標を達成するのに十分な正規表現を知らないところです。

次のようなものが機能します。

RewriteRule ^admin/(.*)/(add|edit)(/(.*)/?)?$ /admin/$1/addedit.php?$2=$3

ただし、URL のGET変数にはスラッシュが含まれます。as(.*)の途中で参照できると思いましたが、そうではありません。(/(.*)/?)?$4

次に、非キャプチャ グループについて読んだので、?:次のように追加しました。

RewriteRule ^admin/(.*)/(add|edit)(?:/(.*)/?)?$ /admin/$1/addedit.php?$2=$3

それはおそらく、私が見落としている比較的単純なことです。

4

2 に答える 2

1

ちょっとした変更が必要なだけです。

RewriteRule ^admin/([^/]+)/(add|edit)(?:/([^/]*))?/?$ /admin/$1/addedit.php?$2=$3 [L,NC]
于 2013-09-27T14:33:41.170 に答える
0

一致する正規表現:^(.*\/admin)(\/user)\/((?:add)|(?:edit))\/?(([^/]*)?\/?)$

置き換える正規表現:/addedit.php?$3=$5

http://regexr.com?36gp3

于 2013-09-27T14:41:23.817 に答える