【发布时间】:2016-10-25 22:07:55
【问题描述】:
我有一个带有分页功能的网站,它使用“p”查询选择要显示的页面。
我的问题是
www.example.com/category.html 和
www.example.com/category.html?p=1
内容相同,并且出于 SEO 目的显示为重复项,我如何将 nginx 中的所有 ?p=1 查询重定向到它们的无查询对应项。
谢谢
【问题讨论】:
我有一个带有分页功能的网站,它使用“p”查询选择要显示的页面。
我的问题是
www.example.com/category.html 和
www.example.com/category.html?p=1
内容相同,并且出于 SEO 目的显示为重复项,我如何将 nginx 中的所有 ?p=1 查询重定向到它们的无查询对应项。
谢谢
【问题讨论】:
p 参数的值包含在$arg_p 变量中。 if 语句可用于测试变量的值。 if 块中可用的操作是有限的(有关详细信息,请参阅 this document),但允许使用简单的 return 语句。
因此,最简单的解决方案是从任何包含p=1 的 URI 中删除查询字符串,如下所示:
server {
...
if ($arg_p = 1) {
return 301 $uri;
}
location / { ... }
}
请注意,$uri 是规范化的请求 URI,并且已经缺少查询字符串。
【讨论】: