我正在尝试编写URL重写以从URL中删除重复的斜杠。
在听完其他答案之后:
我有这段代码
merge_slashes off;
rewrite (.*)//(.*) http://example.com/$1/$2 permanent;
但是,这与URL中的任意数量的重复斜杠都不匹配。
以下是我的测试网址
/page1/content.html # shouldn't match
/page1//content.html # should match and rewrite
/page1///content.html # should match and rewrite
我尝试过这些不同的正则表达式字符串:
(.*)//(.*)
(.*)/+/(.*)
(.*)//+(.*)
^(.*)//(.*)$
^(.*)/+/(.*)$
^(.*)//+(.*)$
"(.*)//(.*)"
"(.*)/+/(.*)"
"(.*)//+(.*)"
"^(.*)//(.*)$"
"^(.*)/+/(.*)$"
"^(.*)//+(.*)$"
它们都不匹配。
使用正则表达式测试程序,我可以看到我的正则表达式是有效的并且自行匹配:https://regex101.com/r/U8nghO/1/
我做错了什么?
这是我的完整配置文件:https://paste.ngx.cc/286d5a2ecfc30152
答案 0 :(得分:0)
事实证明merge_slashes off;
仅在默认server
块或http
块中有效。
将指令移动到我的http
块后,(.*)//(.*)
足以捕获重写。
这会导致所有正在侦听该端口的网站转为merge_slashes off
的副作用。