NGINX - 返回 301 与重写
Posted
技术标签:
【中文标题】NGINX - 返回 301 与重写【英文标题】:NGINX - Return 301 vs Rewrite 【发布时间】:2015-07-21 20:15:12 【问题描述】:我在我的专用服务器中使用NGINX。
我有一个关于return和rewrite 301的问题。
重写 301:
rewrite ^ http://xxx.xxxxx.net/xx-xxx/$request_uri? permanent;
返回 301:
location ~ redirect-this/?$
return 301 http://xxx.xxxxx.net/xx-xxx/redirect-this$1;
所有重定向都正常工作。但是..
什么是最有效的 301 重定向方法?
我有超过 200 个要重定向的网址。那么,你推荐什么?
【问题讨论】:
这个问题有点令人困惑,因为您将rewrite ^
(匹配任何内容)与匹配特定正则表达式的location ~ redirect-this/?$
进行比较。你应该重新制定它。但无论如何,一个好问题......我很好奇哪个更快rewrite ^/test
或location ^/test
with if。
【参考方案1】:
正如nginx pitfalls 中所述,您应该使用服务器块和return
语句,因为它们比通过location
块评估RegEx 快得多。
由于您强制重写规则发送 301,所以在 SEO 方面没有区别,顺便说一句..
【讨论】:
那么你的建议其实是直接在server块中返回301?例如server server_name foo.com; return 301 http://$server_name$request_uri;
?
@tutuDajuju 我建议你使用return 301 http://$host$request_uri;
vs $server_name
,因为这将导致重定向到第一个定义的server_name,而不是它的预期主机。以上是关于NGINX - 返回 301 与重写的主要内容,如果未能解决你的问题,请参考以下文章