仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 469|回复: 8
打印 上一主题 下一主题

[其他Linux] 来一发Nginx下301重定向域名的办法小结

[复制链接]
小女巫 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:47:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
给你装的系统里为ubuntu12.04,它已经封装的很臃肿了,但是考虑到你没有很多时间投入其中,所以给你装了它,但是怎么用它提高开发效率,需要你在学习的过程中不断总结;
linux中nginx301重定向跳转办法总结,有必要的伴侣可参考一下。

第一种情形:会见aaaaaaa站定向到bbbbbbbbbbb站
.代码以下:

server{
server_naaaaaaamewww.aaaaaaa.com;
rewrite^(.*)http://www.bbbbbbbbbbb.com$1permaaaaaaanent;
}



第二种情形:不是会见aaaaaaa站的全体重定向到指定页面

.代码以下:

server{
server_naaaaaaamewww.aaaaaaa.com;
if($host!=‘aaaaaaa.com)
{rewrite^/(.*)$http://www.bbbbbbbbbbb.com/$1permaaaaaaanent;}}


假如写在第一个server段利用IP会见时也将被重定向

第三种带WWW大概不带WWW之间的跳转

.代码以下:

server
{
server_naaaaaaamec.net
rewrite^/(.*)$http://www.c.net/$1permaaaaaaanent;
}



上面是nginx的划定规矩跳转:

起首1、得在你的域名办理内里界说c.com和www.c.com指向你的主机ip地点,我们可使用nslookup命令测试:间接输出nslookupc.com和nslookupwww.c.com都有指向ip的A纪录便可。

第2、我们才干在nginx内里设置rewrite划定规矩。翻开nginx.conf文件
找到你的server设置段:【以下是我的server设置段】

.代码以下:
server
{
listen80;
server_namewww.c.comc.com;
if($host!=‘www.c.com){
rewrite^/(.*)$http://www.c.com/$1permanent;
}


如许就是用户间接会见c.com间接跳转的www.c.com。即让不带www的域名跳转到带www的域名。

3、我们能够是多个二级域名、三级域名都能够随便跳转、大概让它们都跳转到blog.c.com这个域名
批准增加以下语句便可:

.代码以下:
server
{
listen80;
server_nameblog.c.comwgkgood.gicp.net;
if($host=‘wgkgood.gicp.net){
rewrite^/(.*)$http://blog.c.com/$1permanent;
}



为什么要利用301重定向
在网站建立中必要网页重定向的情形良多:如网页目次布局变化,网页重定名、网页的扩大名改动、网站域名改动等。假如不做重定向,用户的保藏和搜刮引擎数据库中的旧地点只能让访客失掉一个404毛病信息页面,会见流量白白损失。不但云云,之前该页面的统统堆集(好比PR值)就都白搭了。
301重定向不但能使页面完成主动跳转,关于搜刮引擎来讲,也大概能够传送PR值。

--------------------------------------------------------------------------------
nginx重定向划定规矩具体先容

rewrite命令
nginx的rewrite相称于apache的rewriterule(年夜多半情形下能够把原有apache的rewrite划定规矩加上引号就能够间接利用),它能够用在server,location和IF前提判别块中,命令格局以下:
rewrite正则表达式交换方针flag标志
flag标志能够用以下几种格局:
lastC基础上都用这个Flag。
breakC中断Rewirte,不在持续婚配
redirectC前往一时重定向的HTTP形态302
permanentC前往永世重定向的HTTP形态301
比方上面这段设定nginx将某个目次上面的文件重定向到另外一个目次,$2对应第二个括号(.*)中对应的字符串:
location/download/{
rewrite^(/download/.*)/m/(.*)..*$$1/nginx-rewrite/$2.gzbreak;
}
nginx重定向的IF前提判别
在server和location两种情形下可使用nginx的IF前提判别,前提能够为以下几种:
正则表达式
如:
婚配判别
~为辨别巨细写婚配;!~为辨别巨细写不婚配
~*为不辨别巨细写婚配;!~为不辨别巨细写不婚配
比方上面设定nginx在用户利用ie的利用重定向到/nginx-ie目次下:
if($http_user_agent~MSIE){
rewrite^(.*)$/nginx-ie/$1break;
}
文件和目次判别
-f和!-f判别是不是存在文件
-d和!-d判别是不是存在目次
-e和!-e判别是不是存在文件或目次
-x和!-x判别文件是不是可实行
比方上面设定nginx在文件和目次不存在的时分重定向:
if(!-e$request_filename){
proxy_passhttp://127.0.0.1/;
}
return
前往http代码,比方设置nginx防盗链:
location~*.(gif|jpg|png|swf|flv)${
valid_referersnoneblockedhttp://www.jefflei.com/http://www.leizhenfang.com/;
if($invalid_referer){
return404;
}
}
set
设置nginx变量
301重定向办法

举行了301重定向,把www.ckuyun.com和jb51.net兼并,并把之前的域名也一并兼并.有两种完成办法,第一种办法是判别nginx中心变量host(老版本是http_host):
server{
server_namewww.ckuyun.comjb51.net;
if($host!=www.ckuyun.com){
rewrite^/(.*)$http://www.ckuyun.com/$1permanent;
}
...
}
第二种办法:
server{
server_namejb51.net;
rewrite^/(.*)http://www.ckuyun.com/$1permanent;
}

测试了第一种办法ok,这两种办法中,permanent是关头,具体申明见nginx重定向划定规矩申明。

lastC基础上都用这个Flag。
breakC中断Rewirte,不在持续婚配
redirectC前往一时重定向的HTTP形态302
permanentC前往永世重定向的HTTP形态301

好了,如今能够反省了局,这里能够看前往的HTTP头信息:

http://www.搜索引擎优化consultants.com/tools/headers.asp

第二种办法没有测试乐成...

测试是不是定向乐成

http://qinfy.net/301-redirect-for-nginx/

输出指令~

/usr/local/nginx/sbin/nginx-t
提醒:
theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisok
configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful

测试乐成~重启nginx~输出指令~

/usr/local/nginx/sbin/nginx-sreload
重启以后测试一下~是不是乐成设定完成!输出指令~

curl-Iimcat.tk


会输入:

HTTP/1.1301MovedPermanently
Server:nginx/0.7.65
Date:Tue,03Aug201001:12:37GMT
Content-Type:text/html
Content-Length:185
Connection:keep-alive
Location:http://qinfy.net/

nginxrewrite伪静态设置参数具体申明(转)
nginxrewrite伪静态设置参数和利用例子附正则利用申明
正则表达式婚配,个中:
*~为辨别巨细写婚配
*~*为不辨别巨细写婚配
*!~和!~*分离为辨别巨细写不婚配及不辨别巨细写不婚配

文件及目次婚配,个中:
*-f和!-f用来判别是不是存在文件
*-d和!-d用来判别是不是存在目次
*-e和!-e用来判别是不是存在文件或目次
*-x和!-x用来判别文件是不是可实行
flag标志有:
*last相称于Apache里的[L]标志,暗示完成rewrite
*break停止婚配,不再婚配前面的划定规矩
*redirect前往302一时重定向地点栏会显现跳转后的地点
*permanent前往301永世重定向地点栏会显现跳转后的地点
一些可用的全局变量有,能够用做前提判别(待补全)
$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri
分离QeePHP的例子
if(!-d$request_filename){
rewrite^/([a-z-A-Z]+)/([a-z-A-Z]+)/?(.*)$/index.php?namespace=user&controller=$1&action=$2&$3last;
rewrite^/([a-z-A-Z]+)/?$/index.php?namespace=user&controller=$1last;
break;
多目次转成参数
abc.domian.com/sort/2=>abc.domian.com/index.php?act=sort&name=abc&id=2
if($host~*(.*).domain.com){
set$sub_name$1;
rewrite^/sort/(d+)/?$/index.php?act=sort&cid=$sub_name&id=$1last;
}
目次对调
/123456/xxxx->/xxxx?id=123456
rewrite^/(d+)/(.+)//$2?id=$1last;
比方上面设定nginx在用户利用ie的利用重定向到/nginx-ie目次下:
if($http_user_agent~MSIE){
rewrite^(.*)$/nginx-ie/$1break;
}
目次主动加“/”
if(-d$request_filename){
rewrite^/(.*)([^/])$http://$host/$1$2/permanent;
}
克制htaccess
location~/.ht{
denyall;
}
克制多个目次
location~^/(cron|templates)/{
denyall;
break;
}
克制以/data开首的文件
能够克制/data/下多级目次下.log.txt等哀求;
location~^/data{
denyall;
}
克制单个目次
不克不及克制.log.txt能哀求

location/searchword/cron/{
denyall;
}
克制单个文件
location~/data/sql/data.sql{
denyall;
}
给favicon.ico和robots.txt设置过时工夫;
这里为favicon.ico为99天,robots.txt为7天其实不纪录404毛病日记
location~(favicon.ico){
log_not_foundoff;
expires99d;
break;
}

location~(robots.txt){
log_not_foundoff;
expires7d;
break;
}
设定某个文件的过时工夫;这里为600秒,其实不纪录会见日记
location^~/html/scripts/loadhead_1.js{
access_logoff;
root/opt/lampp/htdocs/web;
expires600;
break;
}
文件反盗链并设置过时工夫
这里的return412为自界说的http形态码,默许为403,便利找出准确的盗链的哀求
“rewrite^/http://leech.c1gstudio.com/leech.gif;”显现一张防盗链图片
“access_logoff;”不纪录会见日记,加重压力
“expires3d”一切文件3天的扫瞄器缓存
location~*^.+.(jpg|jpeg|gif|png|swf|rar|zip|CSS|js)${
valid_referersnoneblocked*.c1gstudio.com*.c1gstudio.netlocalhost208.97.167.194;
if($invalid_referer){
rewrite^/http://leech.c1gstudio.com/leech.gif;
return412;
break;
}
access_logoff;
root/opt/lampp/htdocs/web;
expires3d;
break;
}
只充许流动ip会见网站,并加上暗码
root/opt/htdocs/www;
allow208.97.167.194;
allow222.33.1.2;
allow231.152.49.4;
denyall;
auth_basic"C1G_ADMIN";
auth_basic_user_filehtpasswd;
将多级目次下的文件转成一个文件,加强搜索引擎优化效果
/job-123-456-789.html指向/job/123/456/789.html
rewrite^/job-([0-9]+)-([0-9]+)-([0-9]+).html$/job/$1/$2/jobshow_$3.htmllast;
将根目次下某个文件夹指向2级目次
如/shanghaijob/指向/area/shanghai/
假如你将last改成permanent,那末扫瞄器地点栏显是/location/shanghai/
rewrite^/([0-9a-z]+)job/(.*)$/area/$1/$2last;
下面例子有个成绩是会见/shanghai时将不会婚配
rewrite^/([0-9a-z]+)job$/area/$1/last;
rewrite^/([0-9a-z]+)job/(.*)$/area/$1/$2last;
如许/shanghai也能够会见了,但页面中的绝对链接没法利用,
如./list_1.html实在地点是/area/shanghia/list_1.html会酿成/list_1.html,导至没法会见。
那我加上主动跳转也是不可咯
(-d$request_filename)它有个前提是必须为实在目次,而我的rewrite不是的,以是没无效果
if(-d$request_filename){
rewrite^/(.*)([^/])$http://$host/$1$2/permanent;
}
晓得缘故原由后就好办了,让我手动跳转吧
rewrite^/([0-9a-z]+)job$/$1job/permanent;
rewrite^/([0-9a-z]+)job/(.*)$/area/$1/$2last;
文件和目次不存在的时分重定向:
if(!-e$request_filename){
proxy_passhttp://127.0.0.1/;
}
域名跳转
server
{
listen80;
server_namejump.c1gstudio.com;
indexindex.htmlindex.htmindex.php;
root/opt/lampp/htdocs/www;
rewrite^/http://www.c1gstudio.com/;
access_logoff;
}
多域名转向
server_namehttp://www.c1gstudio.com/http://www.c1gstudio.net/;
indexindex.htmlindex.htmindex.php;
root/opt/lampp/htdocs;
if($host~"c1gstudio.net"){
rewrite^(.*)http://www.c1gstudio.com$1/permanent;
}
三级域名跳转
if($http_host~*"^(.*).i.c1gstudio.com$"){
rewrite^(.*)http://top.yingjiesheng.com$1/;
break;
}
域名镜向
server
{
listen80;
server_namemirror.c1gstudio.com;
indexindex.htmlindex.htmindex.php;
root/opt/lampp/htdocs/www;
rewrite^/(.*)http://www.c1gstudio.com/$1last;
access_logoff;
}
某个子目次作镜向
location^~/zhaopinhui{
rewrite^.+http://zph.c1gstudio.com/last;
break;
}
discuzucenterhome(uchome)rewrite
rewrite^/(space|network)-(.+).html$/$1.php?rewrite=$2last;
rewrite^/(space|network).html$/$1.phplast;
rewrite^/([0-9]+)$/space.php?uid=$1last;
discuz7rewrite
rewrite^(.*)/archiver/((fid|tid)-[w-]+.html)$$1/archiver/index.php?$2last;
rewrite^(.*)/forum-([0-9]+)-([0-9]+).html$$1/forumdisplay.php?fid=$2&page=$3last;
rewrite^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+).html$$1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3last;
rewrite^(.*)/profile-(username|uid)-(.+).html$$1/viewpro.php?$2=$3last;
rewrite^(.*)/space-(username|uid)-(.+).html$$1/space.php?$2=$3last;
rewrite^(.*)/tag-(.+).html$$1/tag.php?name=$2last;
给discuz某版块独自设置域名
server_namebbs.c1gstudio.comnews.c1gstudio.com;

location=/{
if($http_host~news.c1gstudio.com$){
rewrite^.+http://news.c1gstudio.com/forum-831-1.htmllast;
break;
}
}
discuzucenter头像rewrite优化
location^~/ucenter{
location~.*.php?$
{
#fastcgi_passunix:/tmp/php-cgi.sock;
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
includefcgi.conf;
}

location/ucenter/data/avatar{
log_not_foundoff;
access_logoff;
location~/(.*)_big.jpg${
error_page404/ucenter/images/noavatar_big.gif;
}
location~/(.*)_middle.jpg${
error_page404/ucenter/images/noavatar_middle.gif;
}
location~/(.*)_small.jpg${
error_page404/ucenter/images/noavatar_small.gif;
}
expires300;
break;
}
}
jspacerewrite
location~.*.php?$
{
#fastcgi_passunix:/tmp/php-cgi.sock;
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
includefcgi.conf;
}

location~*^/index.php/
{
rewrite^/index.php/(.*)/index.php?$1break;
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
includefcgi.conf;
}

对于linux命令,一定要学会用man和info去查他们的解释;
透明 该用户已被删除
沙发
发表于 2015-1-18 15:27:36 | 只看该作者
Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-26 22:40:38 | 只看该作者
尽量不要提问纯属是扯蛋.学习Linux特别是自己一个人初学入手的时候没人教很困难.当然如果可以的话平时多去买些Linux书...对学习Linux很有帮助.
老尸 该用户已被删除
地板
发表于 2015-2-4 23:50:50 | 只看该作者
Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。
再见西城 该用户已被删除
5#
发表于 2015-2-10 23:46:06 | 只看该作者
Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。
小魔女 该用户已被删除
6#
发表于 2015-3-1 18:20:13 | 只看该作者
最好先搜寻一下论坛是否有您需要的文章。这样可以获得事半功倍的效果。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-10 22:07:30 | 只看该作者
我是学习嵌入式方向的,这学期就选修了这门专业任选课。
变相怪杰 该用户已被删除
8#
发表于 2015-3-17 12:08:20 | 只看该作者
可以说自己收获很大,基本上完成了老师布置的任务,对于拔高的题目没有去做,因为我了解我的水平,没有时间和精力去做。?
活着的死人 该用户已被删除
9#
发表于 2015-3-24 10:35:50 | 只看该作者
查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 21:47

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表