包含不匹配的双斜杠的重写规则
Rewrite rule containing double slash not matched
我正在使用这个重写规则来重定向我的搜索请求:
RewriteRule ^search/([^/\.]*)/([^/]+)/?$ index.php?search=&additional= [L]
此规则适用于
search/search/add
但如果给我一个找不到
的页面
search//add
(空搜索)
我做错了什么?正则表达式应匹配:
是的,您的正则表达式将匹配 search//add
,但问题是 mod_rewrite
引擎在 RewriteRule
指令中将多个斜杠剥离为单个斜杠。
您可以使用 RewriteCond
代替:
RewriteCond %{REQUEST_URI} ^/search/([^/.]*)/([^/]+)/?$ [NC]
RewriteRule ^ index.php?search=%1&additional=%2 [L,QSA]
我正在使用这个重写规则来重定向我的搜索请求:
RewriteRule ^search/([^/\.]*)/([^/]+)/?$ index.php?search=&additional= [L]
此规则适用于
search/search/add
但如果给我一个找不到
的页面
search//add
(空搜索)
我做错了什么?正则表达式应匹配:
是的,您的正则表达式将匹配 search//add
,但问题是 mod_rewrite
引擎在 RewriteRule
指令中将多个斜杠剥离为单个斜杠。
您可以使用 RewriteCond
代替:
RewriteCond %{REQUEST_URI} ^/search/([^/.]*)/([^/]+)/?$ [NC]
RewriteRule ^ index.php?search=%1&additional=%2 [L,QSA]