Apache 重写规则之间的差异

Apache 重写规则之间的差异,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,你能给我解释一下这些重写规则之间的区别吗 rewriterule ^news/category/(.*)/([0-9]+)/?$ index.php?p=news&category=$1&page=$2 [L,QSA] rewriterule ^news/category/(.+)/([0-9]+)/*$ index.php?p=news&category=$1&page=$2 [L,QSA] .*和.+之间的差异以及/?$和/*$之间的差异 及 .

你能给我解释一下这些重写规则之间的区别吗

rewriterule ^news/category/(.*)/([0-9]+)/?$    index.php?p=news&category=$1&page=$2 [L,QSA]
rewriterule ^news/category/(.+)/([0-9]+)/*$    index.php?p=news&category=$1&page=$2 [L,QSA]
.*和.+之间的差异以及/?$和/*$之间的差异

.*和.+??之间的差异

谢谢你的帮助

*在零次和无限次之间进行匹配,根据需要尽可能多次回馈 .+在一次和无限次之间匹配,根据需要尽可能多次回馈 .+? 在一次和无限次之间进行匹配,根据需要尽可能少地扩展

转到以调试您的正则表达式


/?$和/*$我不确定。它总是匹配的。

你有格特的技术答案。 我的非技术性建议是:

第1行:如果URL有一个字符串或无,后跟一个斜杠和一个数字或无,以/或否结尾,则应用重写规则 第2行:如果URL有一个字符串,后跟一个斜杠和一个数字或什么都没有,以whatever结尾,那么应用重写规则 以下是您可能遇到的URL问题:

对于1,这将被视为有效:news/category//548/。 对于2,这将被视为有效:news/category/whatever/548/this-is-a-problematic564string。 您可以将相同的原则应用于第二个比较/问题

rewriterule ^news/category/(.*)/?$    index.php?p=news&category=$1 [L,QSA]
rewriterule ^news/category/(.+?)/*$    index.php?p=news&category=$1 [L,QSA]