在所有’nginx中的重定向’问题中,我找不到如何使用regexp重定向(使用return 301和更好的no ifs).
我有一个链接到我的网站,我想删除参数结束:
domain.com/article/some-sluggish-link/?report=1 #number at end
正则表达式找到这个:
\?report=\d*$
为此我想要301重定向到:
domain.com/article/some-sluggish-link/
我nginx.conf我有3个重定向:
server {
listen 80;
server_name subdomain.example.com.; #just one subdomain
}
server {
listen 80;
server_name *.example.com;
return 301 http://example.com$request_uri;
}
server {
listen 80;
server_name example.com;
}
它有效;它将所有www.,ww.,aaa.和每个子域(除了1个特定域名)重定向到主domain.com
我很感激任何帮助
干杯!
编辑25/03/2015
我的conf文件中已经有“location /”:
location / {
uwsgi_pass unix://opt/run/ps2.sock;
include uwsgi_params;
}
它重定向到一些django应用程序.在应用’if’子句后,它给了我无限循环!
我的问题基本上是搜索引擎优化,这意味着谷歌索引某些特定页面(带有’?report =’参数的页面),这些页面是没有此尾随参数的网址副本.
我希望googlebot停止使用robots.txt建立索引,但问题是您无法在此文件中使用正则表达式.此外,我不能说哪个网址完全是nedd重定向或停止索引因为它以某种方式随机发生…
最佳答案
我自己没试过,但它应该有效.在服务器{}块中添加:
location / {
if ($args !~ ^$) {
rewrite ^ $request_uri? permanent;
}
}
这个块实际上做了什么:
location /告诉nginx将这些指令应用于与根目录和子目录匹配的所有请求.
if($args!〜^ $)检查URI是否包含带正则表达式的任何查询参数.
重写^ $request_uri?常驻;无需任何查询参数即可重定向到所需的URI.的?在$request_uri的末尾告诉nginx从重定向URL中剥离查询参数.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。