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

Rewrite rule containing double slash not matched

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

此规则适用于
search/search/add
但如果给我一个找不到
的页面 search//add(空搜索)

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

Debuggex Demo

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

您可以使用 RewriteCond 代替:

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