regex - 使用 Perl 反斜杠序列的 Apache 重写规则不起作用

标签 regex perl apache .htaccess mod-rewrite

我在 Nginx 上有一个非常简单的重写规则:

rewrite (*UTF8)^/([\pL\pN\/-]*)$ /index.php?route=$1;

它使用 Perl 反斜杠序列来匹配所有 unicode 字母和数字。

我试图在 Apache 上复制它:

RewriteRule ^([\pL\pN\/-]*)$ /index.php?route=$1 [QSA,L]

但是它只匹配斜杠和破折号。错误日志很干净。

最佳答案

mod_rewrite 不支持 \p 属性,但您可以将 \wB 一起使用>NE 标志,它将向您发送未转义的重写 URI 到 /index.php:

RewriteRule ^([\w/-]+)$ /index.php?route=$1 [QSA,L,B,NE]

PS: \w 也包括下划线。

关于regex - 使用 Perl 反斜杠序列的 Apache 重写规则不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723271/

相关文章:

java - 正则表达式,排除非数字

regex - 编写不带否定的正则表达式

perl - Perl 中 Scalar::Util::looks_like_number 的行为

android - 包 org.apache.cordova 不存在 android studio

php - PHP Websockets服务器在256个用户后停止接受连接

python - Ubuntu : Python3. 8 - Apache2 - WSGI - Numpy 模块未找到错误

表单的正则表达式模式匹配验证在 ant.design 中不起作用

python - 为什么 re.findall() 在这种情况下返回一个空列表,而在另一个情况下返回一个包含空字符串的列表?

regex - 扩展 [可选]、分组和 |或文本中的运算符

perl - 如何在 Mojolicious 中测试重定向?