NGINX:永久删除部分网址

时间:2017-01-19 10:45:27

标签: nginx url-rewriting nginx-location

我重新设计了一个网站并更改了网址格式。 现在我需要将旧网址更改为新网址。

这是我的旧网址:

http://www.example.com/forum/showPost/2556/Urgent-Respose

新网址将是:

http://www.example.com/2556/Urgent-Respose

如何通过从网址中删除/forum/showPost来使用nginx重定向到新网址?

编辑: 还有这个网址:

http://www.tikshare.com/business/showDetails/1/Pulkit-Sharma-and-Associates,-Chartered-Accountants-in-Bangalore

新网址:

http://www.tikshare.com/classifieds/1/Pulkit-Sharma-and-Associates,-Chartered-Accountants-in-Bangalore

以上链接已完全删除,而此链接将business/showDetails替换为classifieds

2 个答案:

答案 0 :(得分:4)

有很多选择。您可以保护位置块内的重写,这非常有效,因为正则表达式仅在URI前缀匹配时进行测试:

location ^~ /forum/showPost {
    rewrite ^/forum/showPost(.*)$ $1 permanent;
}

有关详情,请参阅this document

您在问题中使用了永久 - 这会产生301响应。

如果您使用redirect代替permanent,则会生成302回复。

如果您使用last而不是permanent,则会发生内部重定向,浏览器地址栏将继续显示旧网址。

回应你的评论:

rewrite ^/forum/showPost(.*)$ /post$1 permanent;

答案 1 :(得分:1)

server 
{
    listen 80; ## Listen on port 80 ##
    server_name example.com;  ## Domain Name ##
    index index.html index.php;  ## Set the index for site to use ##
    charset utf-8; ## Set the charset ##
    location ^~ /forum/showPost {
        rewrite ^/forum/showPost(.*)$ $1 permanent;
    }
    location ^~ /business/showDetails {     
        rewrite ^(.*)business/showDetails(.*)$ classifieds$1 permanent;
    }
}