NGINX:永久删除部分网址

Posted

技术标签:

【中文标题】NGINX:永久删除部分网址【英文标题】:NGINX: remove part of url permanantly 【发布时间】:2017-06-04 00:53:12 【问题描述】:

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

这是我的旧网址:

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

新的网址将是:

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

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

编辑: 还有这个网址:

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

【问题讨论】:

请参考以下网址,使用相同的解决方案:serverfault.com/questions/302509/… @Opv 请在评论中说明放置位置,只有一行可以使用。服务器技术新手。 【参考方案1】:

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

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

请参阅this document 了解更多信息。

您在问题中使用了 permanent - 这会生成 301 响应。

如果您使用 redirect 而不是 permanent - 将生成 302 响应。

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

回应您的评论:

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

【讨论】:

谢谢。它有效,但它是 301 重定向。还假设我的新网址是否包含像example.com/post/2556/Urgent-Respose 这样的新词。应该改变什么? firefox 出现 414 错误。 URI 太大。在 safari 上运行良好。 查看您的nginx 访问日志和Firefox 的Live HTTP Headers 以尝试诊断问题,rewrite 本身很好 - 肯定有其他一些交互正在进行。此外,请清除 Firefox 缓存,因为存在陈旧缓存数据时可能难以诊断问题。 非常感谢。让我开心。【参考方案2】:
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;
    

【讨论】:

我已经编辑了这个问题。请也请解决第二个问题。它将帮助像我这样的许多用户。 为什么要 2 美元而不是 1 美元。理查兹的回答也使用 1 美元。 重写^(.*)business/showDetails(.*)$分类广告$1永久;这也可以。 @Opv 你的$1 只会捕获领先的/rewrite 在不包括方案、服务器名称或查询字符串的 规范化 URI 上运行。

以上是关于NGINX:永久删除部分网址的主要内容,如果未能解决你的问题,请参考以下文章

永久短网址生成 可以永久使用的短链接推荐

伪静态网址301重定向到静态网址怎么实现

视频组网/网络穿透工具EasyNTS如何永久删除其中某个设备?

从硬盘驱动器中永久删除文件

禁用 RPC 时如何在远程服务器上删除具有多个前缀的永久表

我的帖子永久链接在 Wordpress 中始终相同