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:永久删除部分网址的主要内容,如果未能解决你的问题,请参考以下文章