我正在尝试使用重写规则创建以下行为。
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
变量中包含斜杠。我想我可以引用as(.*)
的中间,但我不是。(/(.*)/?)?
$4
然后,我阅读了有关非捕获组的信息,因此添加了?:
如下内容:
RewriteRule ^admin/(.*)/(add|edit)(?:/(.*)/?)?$ /admin/$1/addedit.php?$2=$3
这可能是我忽略的一个相对简单的事情。