regex - 包含双斜杠的重写规则不匹配

标签 regex .htaccess mod-rewrite apache2

我正在使用此重写规则来重定向我的搜索请求:
RewriteRule ^search/([^/\.]*)/([^/]+)/?$index.php?search=$1&additional=$2 [L]

这条规则适用于
搜索/搜索/添加
但它给了我一个找不到的页面
search//add(空搜索)

我做错了什么?正则表达式应该匹配:

Regular expression visualization

Debuggex Demo

最佳答案

是的,您的正则表达式将匹配 search//add 但问题是 mod_rewrite 引擎将 RewriteRule 指令中的多个斜杠剥离为单个斜杠。

您可以使用 RewriteCond 来代替:

RewriteCond %{REQUEST_URI} ^/search/([^/.]*)/([^/]+)/?$ [NC]
RewriteRule ^ index.php?search=%1&additional=%2 [L,QSA]

关于regex - 包含双斜杠的重写规则不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37513946/

相关文章:

regex - Linux - 根据带有标题和尾部的关键位置对文件进行排序

javascript - 匹配不可打印/非 ASCII 字符并从文本中删除

python - pythons re.compile(r' pattern flags') 中的 "r"是什么意思?

apache - mod_rewrite 规则删除 #!来自网址?

PHP URL 正则表达式和参数

php - .htaccess 所有目录均给出 403 Forbidden

php - 如何在 .htpasswd 文件中使用 md5 密码?

php - 干净的 URL 用户名重定向

Apache mod_rewrite 接受语言子域重定向

php - 在 LAMP 配置中创建虚 URL