我有一些看起来像这样的网址:
http://www.mywebsite.com/stuff/web-design-development
http://www.mywebsite.com/web-design/
http://www.mywebsite.com/web-design/secondary-page
基本上,我需要/ web-design中的任何内容,包含或不包含斜杠,并包含重定向到/的斜杠(如第三个URL)之后的任何内容。但我遇到的问题是我的重定向会影响第一个网址,因为它中包含“网页设计”。
这就是我所拥有的:
if ($request_filename ~ web-design/.+) {
rewrite ^(.*) http://www.mywebsite.com permanent;
}
我知道如何纠正这个问题吗?
答案 0 :(得分:1)
一个简单的位置块将匹配所有这些
location /web-design {
return 301 $scheme://www.mywebsite.com;
end
这将匹配启动与/web-design
的所有内容并重定向。
以下是why return and not rewrite,此处是location directive文档。
另请注意,301响应是可缓存的,如果您遇到奇怪的行为,请考虑清除缓存,因为当配置不正确时,您的浏览器可能会缓存旧的301.
答案 1 :(得分:0)
我能够通过简化我的重写来解决这个问题。
而不是使用if语句,我只是做了:
rewrite ^/web-design/?$ http://www.mywebsite.com/ permanent;