[英]Complex regex in Apache rewrite rule
我正在嘗試使用重寫規則創建以下行為。
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)之后的可選斜杠為止。 那就是我不太了解正則表達式以實現我的目標的地方。
類似於以下作品:
RewriteRule ^admin/(.*)/(add|edit)(/(.*)/?)?$ /admin/$1/addedit.php?$2=$3
但是,URL最終在GET
變量中包含斜杠。 我想我可以引用(/(.*)/?)?
中間的(.*)
(/(.*)/?)?
為$4
,但我不是。
然后,我閱讀了有關非捕獲組的信息 ,因此添加了一個?:
像這樣:
RewriteRule ^admin/(.*)/(add|edit)(?:/(.*)/?)?$ /admin/$1/addedit.php?$2=$3
這可能是我忽略的相對簡單的事情。
您快到了,只需要進行一些小的修改:
RewriteRule ^admin/([^/]+)/(add|edit)(?:/([^/]*))?/?$ /admin/$1/addedit.php?$2=$3 [L,NC]
要匹配的正則表達式: ^(.*\\/admin)(\\/user)\\/((?:add)|(?:edit))\\/?(([^/]*)?\\/?)$
要替換的/addedit.php?$3=$5
表達式: /addedit.php?$3=$5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.