我有一些看起来像这样的URL:
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,因为它包含"web-design“。
这就是我所拥有的:
if ($request_filename ~ web-design/.+) {
rewrite ^(.*) http://www.mywebsite.com permanent;
}你知道我该怎么纠正这个问题吗?
发布于 2015-02-21 15:41:08
一个简单的位置块就可以匹配所有这些
location /web-design {
return 301 $scheme://www.mywebsite.com;
end这将与使用/web-design启动并重定向它的任何内容相匹配。
这里是why return and not rewrite,这里是location directive文档。
还要记住,301响应是可以缓存的,如果你遇到了奇怪的行为,可以考虑清除缓存,因为也许你的浏览器在配置不正确的时候缓存了旧的301。
发布于 2015-02-21 11:51:33
我能够通过简化我的重写来解决这个问题。
我没有使用if语句,而是直接使用了:
rewrite ^/web-design/?$ http://www.mywebsite.com/ permanent;https://stackoverflow.com/questions/28641711
复制相似问题