.htaccess 如何在Apache RewriteRule中给正则表达式添加+(加号)?

aemubtdh  于 2023-02-05  发布在  Apache
关注(0)|答案(1)|浏览(126)

目前,我的.htaccess文件中包含以下代码,它将A-Z1-9a-z-输入重写为PHP文件:

RewriteRule ^([A-Z­a-z­0-9­-]+)/?$ index.php?url=$1 [L]

我需要把+添加到正则表达式中,我该怎么做呢?
我试过了

RewriteRule ^([A-Z­a-z­0-9­-+]+)/?$ index.php?url=$1 [L]

我还看了几个正则表达式备忘单,它们真的没有什么用。

au9on6nz

au9on6nz1#

从表面上看,您发布的正则表达式是“OK”的,应该可以工作(尽管您应该考虑反斜杠转义字符类中的最后一个连字符,或者将其移动到字符类中的最后一个字符,以避免将来将其解释为 range 指示符的任何歧义)。
例如(复制/粘贴以下内容):

RewriteRule ^([A-Za-z0-9+-]+)/?$ index.php?url=$1 [L]

(This已删 debugging 误字符- * 见下文 *。)
或者,如果您也可以匹配下划线(_),那么您可以使用\w(word chars)速记字符类来稍微简化它:^([\w+-]+)/?$
然而,你有一个软连字符(U+00AD)-肉眼看不见-嵌入在字符类的每个范围之间,这可能会破坏正则表达式。例如,展开隐藏的unicode字符,这是你试图使用的实际(无效)正则表达式:

^([A-ZU+00ADa-zU+00AD0-9U+00AD-+]+)/?$

相关问题