Nginx企业级rewrite 实战操作

  分类:技术   评论:无  浏览: 588次

友情提示: 身处IT界,科学上网在所难免,故整理代理搭建博文传送门以方便猿们查阅资料,请勿作他用。

一、访问http://www.abc.com正常,现在需要访问abc.com,直接跳转到http://www.abc.com

server {
listen 80;
server_name abc.com;
access_log off;
rewrite (.+) $scheme://www.$host$1 permanent;
}

二、如果你们域名是http://www.abc.com,现在想换一个域名http://www.def.com了,又不想失去之前域名的访问量,需要配置跳转。 首先需要在你的server_name里面把www.abc.comwww.def.cn都写上。 然后做如下配置:

location / {
if ($host = 'www.abc.com')
{
rewrite ^/(.*)$ http://www.def.com/$1 permanent;
}
}

三、跳转维护页面,比如今天维护,想挂一个维护页面,希望除某些特定的IP地址能正常访问,因为需要测试。其余所以的IP地址都是访问维护页面,这个需求我之前好像写过,但是今天写的有点不一样。在server里面添加如下内容:

set $rewrite true;
if ($remote_addr = "xxx.xxx.xxx.xxx") {
set $rewrite false;
}
if ($rewrite = true) {
rewrite (.+) http://www.abc.com/maintenance.html;
}
location = /maintenance.html {
  root /var/vhost;
}

四、比如现在你的域名是http://bbs.abc.com,现在将这个域名下面的帖子访问都跳转到http://www.abc.com/bbs,注意跳转后的参数也要保持一致。 比如:http://bbs.abc.com/post/addpost/913.shtml跳转到http://www.abc.com/bbs/post/addpost/913.shtml

location /post {
rewrite (.+) http://www.abc.com/bbs$1 permanent;
}

五、基于uri的跳转

if ($request_uri ~* ^/note\.php\?product_code=(.*)$) {
rewrite (.*) http://www.abc.com permanent;
}
if ($request_uri ~ ^/forum-(140|141|142|143|144|145|150|151|152|153|154|155|156|157|158|159|200|222|223|224|225|226|227|228)-(\d+).html$) {
rewrite (.*) http://www.abc.com/list permanent;
}

六、基于目录下面文件的跳转

location ~* /upload/.*\.php$ {
return 404;
}

七、最普通的url到url跳转

location ~* ^/ab/maintain/main.html {
rewrite (.+) http://www.abc.com/maintain/main.html permanent;
}

八、目录后的参数保持不变的跳转

rewrite ^/assets/upload/(.*)$ http://assets.kgc.cn/upload/$1 permanent;

九、多次匹配

if ($request_uri ~ ^/baseuiue(.shtml)|^/zhuanti/baseuiue(.shtml)) {
    rewrite (.+) http://123.abc.cn/zhuanti/baseuiue.shtml permanent;
}
点击这里给我发消息
嘿!有什么可以帮助你吗?