一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - Nginx - Nginx下301重定向域名的方法小結

Nginx下301重定向域名的方法小結

2019-10-09 16:25服務器之家 Nginx

在網站建設中需要網頁重定向的情況很多:如網頁目錄結構變動,網頁重命名、網頁的擴展名改變、網站域名改變等。

linux中nginx 301重定向跳轉方法總結,有需要的朋友可參考一下。 

第一種情況:訪問aaaaaaa站定向到bbbbbbbbbbb站 

復制代碼代碼如下:


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



第二種情況:不是訪問aaaaaaa站的全部重定向到指定頁面 

復制代碼代碼如下:


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


如果寫在第一個server段 使用IP訪問時也將被重定向 

第三種帶WWW或者不帶WWW之間的跳轉 

復制代碼代碼如下:


server 

server_naaaaaaame c.net 
rewrite ^/(.*)$ http://www.c.net/$1 permaaaaaaanent; 



下面是nginx的規則跳轉: 

首先一、得在你的域名管理里面定義 c.com和www.c.com指向你的主機ip地址,我們可以使用nslookup命令測試:直接輸入 nslookup c.com和nslookup www.c.com 都有指向ip的A記錄即可。 

第二、我們才能在nginx里面配置rewrite規則。打開 nginx.conf文件 
找到你的server配置段:【以下是我的server配置段】 

復制代碼代碼如下:

server 

listen 80; 
server_name www.c.com c.com; 
if ($host != ‘www.c.com' ) { 
rewrite ^/(.*)$ http://www.c.com/$1 permanent; 


這樣就是用戶直接訪問c.com直接跳轉的www.c.com。即讓不帶www的域名跳轉到帶www的域名。 

三、我們可以是多個二級域名、三級域名都可以隨意跳轉、或者讓它們都跳轉到blog.c.com這個域名 
同意添加如下語句即可: 

復制代碼代碼如下:

server 

listen 80; 
server_name blog.c.com wgkgood.gicp.net; 
if ($host = ‘wgkgood.gicp.net' ) { 
rewrite ^/(.*)$ http://blog.c.com/$1 permanent; 



為何要使用301重定向 
在網站建設中需要網頁重定向的情況很多:如網頁目錄結構變動,網頁重命名、網頁的擴展名改變、網站域名改變等。如果不做重定向,用戶的收藏和搜索引擎數據庫中的舊地址只能讓訪客得到一個404錯誤信息頁面,訪問流量白白喪失。不僅如此,之前該頁面的一切積累(比如PR值)就都白費了。 
301重定向不僅能使頁面實現自動跳轉,對于搜索引擎來說,也可能可以傳遞PR值。 

-------------------------------------------------------------------------------- 
nginx重定向規則詳細介紹 

rewrite命令 
nginx的rewrite相當于apache的rewriterule(大多數情況下可以把原有apache的rewrite規則加上引號就可以直接使用),它可以用在server,location 和IF條件判斷塊中,命令格式如下: 
rewrite 正則表達式 替換目標 flag標記 
flag標記可以用以下幾種格式: 
last – 基本上都用這個Flag。 
break – 中止Rewirte,不在繼續匹配 
redirect – 返回臨時重定向的HTTP狀態302 
permanent – 返回永久重定向的HTTP狀態301 
例如下面這段設定nginx將某個目錄下面的文件重定向到另一個目錄,$2對應第二個括號(.*)中對應的字符串: 
location /download/ { 
rewrite ^(/download/.*)/m/(.*)\..*$ $1/nginx-rewrite/$2.gz break; 

nginx重定向的IF條件判斷 
在server和location兩種情況下可以使用nginx的IF條件判斷,條件可以為以下幾種: 
正則表達式 
如: 
匹配判斷 
~ 為區分大小寫匹配; !~為區分大小寫不匹配 
~* 為不區分大小寫匹配;!~為不區分大小寫不匹配 
例如下面設定nginx在用戶使用ie的使用重定向到/nginx-ie目錄下: 
if ($http_user_agent ~ MSIE) { 
rewrite ^(.*)$ /nginx-ie/$1 break; 

文件和目錄判斷 
-f和!-f判斷是否存在文件 
-d和!-d判斷是否存在目錄 
-e和!-e判斷是否存在文件或目錄 
-x和!-x判斷文件是否可執行 
例如下面設定nginx在文件和目錄不存在的時候重定向: 
if (!-e $request_filename) { 
proxy_pass http://127.0.0.1/; 

return 
返回http代碼,例如設置nginx防盜鏈: 
location ~* \.(gif|jpg|png|swf|flv)$ { 
valid_referers none blocked http://www.jefflei.com/ http://www.leizhenfang.com/; 
if ($invalid_referer) { 
return 404; 


set 
設置nginx變量 


301重定向方法 

進行了301重定向,把www.ythuaji.com.cn和jb51.net合并,并把之前的域名也一并合并. 有兩種實現方法,第一種方法是判斷nginx核心變量host(老版本是http_host): 
server { 
server_name www.ythuaji.com.cn jb51.net ; 
if ($host != 'www.ythuaji.com.cn' ) { 
rewrite ^/(.*)$ //www.ythuaji.com.cn/$1 permanent; 

... 

第二種方法: 
server { 
server_name jb51.net; 
rewrite ^/(.*) //www.ythuaji.com.cn/$1 permanent; 


測試了第一種方法ok,這兩種方法中, permanent是關鍵,詳細說明見nginx重定向規則說明。 

last – 基本上都用這個Flag。 
break – 中止Rewirte,不在繼續匹配 
redirect – 返回臨時重定向的HTTP狀態302 
permanent – 返回永久重定向的HTTP狀態301 

好了,現在可以檢查結果,這里可以看返回的HTTP頭信息: 

http://www.seoconsultants.com/tools/headers.asp 

第二種方法沒有測試成功... 


測試是否定向成功 

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

輸入指令~ 

/usr/local/nginx/sbin/nginx -t 
提示: 
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok 
configuration file /usr/local/nginx/conf/nginx.conf test is successful 

測試成功~ 重啟nginx~ 輸入指令~ 

/usr/local/nginx/sbin/nginx -s reload 
重啟之后測試一下~是否成功設定完成! 輸入指令~ 

curl -I imcat.tk 


會輸出: 

HTTP/1.1 301 Moved Permanently 
Server: nginx/0.7.65 
Date: Tue, 03 Aug 2010 01:12:37 GMT 
Content-Type: text/html 
Content-Length: 185 
Connection: keep-alive 
Location: http://qinfy.net/ 


nginx rewrite 偽靜態配置參數詳細說明(轉)

nginx rewrite 偽靜態配置參數和使用例子 附正則使用說明

正則表達式匹配,其中:

* ~ 為區分大小寫匹配 
* ~* 為不區分大小寫匹配 
* !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配


文件及目錄匹配,其中:

* -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&$3 last; 
rewrite ^/([a-z-A-Z]+)/?$ /index.php?namespace=user&controller=$1 last; 
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=$1 last; 
}
目錄對換
/123456/xxxx -> /xxxx?id=123456

rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;
例如下面設定nginx在用戶使用ie的使用重定向到/nginx-ie目錄下:

if ($http_user_agent ~ MSIE) { 
rewrite ^(.*)$ /nginx-ie/$1 break; 
}
目錄自動加“/”

if (-d $request_filename){ 
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent; 
}
禁止htaccess

location ~/\.ht { 
deny all; 
}
禁止多個目錄

location ~ ^/(cron|templates)/ { 
deny all; 
break; 
}
禁止以/data開頭的文件
可以禁止/data/下多級目錄下.log.txt等請求;

location ~ ^/data { 
deny all; 
}
禁止單個目錄
不能禁止.log.txt能請求

location /searchword/cron/ { 
deny all; 
}
禁止單個文件

location ~ /data/sql/data.sql { 
deny all; 
}
給favicon.ico和robots.txt設置過期時間;
這里為favicon.ico為99 天,robots.txt為7天并不記錄404錯誤日志

location ~(favicon.ico) { 
log_not_found off; 
expires 99d; 
break; 


location ~(robots.txt) { 
log_not_found off; 
expires 7d; 
break; 
}
設定某個文件的過期時間;這里為600秒,并不記錄訪問日志

location ^~ /html/scripts/loadhead_1.js { 
access_log off; 
root /opt/lampp/htdocs/web; 
expires 600; 
break; 
}
文件反盜鏈并設置過期時間
這里的return 412 為自定義的http狀態碼,默認為403,方便找出正確的盜鏈的請求
“rewrite ^/ http://leech.zzvips.com/leech.gif;”顯示一張防盜鏈圖片
“access_log off;”不記錄訪問日志,減輕壓力
“expires 3d”所有文件3天的瀏覽器緩存

location ~* ^.+\.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ { 
valid_referers none blocked *.zzvips.com *.aspku.net localhost 208.97.167.194; 
if ($invalid_referer) { 
rewrite ^/ http://leech.zzvips.com/leech.gif; 
return 412; 
break; 

access_log off; 
root /opt/lampp/htdocs/web; 
expires 3d; 
break; 
}
只充許固定ip訪問網站,并加上密碼

root /opt/htdocs/www; 
allow 208.97.167.194; 
allow 222.33.1.2; 
allow 231.152.49.4; 
deny all; 
auth_basic "C1G_ADMIN"; 
auth_basic_user_file htpasswd;
將多級目錄下的文件轉成一個文件,增強seo效果
/job-123-456-789.html 指向/job/123/456/789.html

rewrite ^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/jobshow_$3.html last;
將根目錄下某個文件夾指向2級目錄
如/shanghaijob/ 指向 /area/shanghai/
如果你將last改成permanent,那么瀏覽器地址欄顯是 /location/shanghai/

rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;
上面例子有個問題是訪問/shanghai 時將不會匹配

rewrite ^/([0-9a-z]+)job$ /area/$1/ last; 
rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;
這樣/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/$2 last;
文件和目錄不存在的時候重定向:

if (!-e $request_filename) { 
proxy_pass http://127.0.0.1/; 
}
域名跳轉

server 

listen 80; 
server_name jump.zzvips.com; 
index index.html index.htm index.php; 
root /opt/lampp/htdocs/www; 
rewrite ^/ http://www.ythuaji.com.cn/; 
access_log off; 
}
多域名轉向

server_name http://www.ythuaji.com.cn/ http://www.aspku.net/; 
index index.html index.htm index.php; 
root /opt/lampp/htdocs; 
if ($host ~ "zzvips\.net") { 
rewrite ^(.*) http://www.ythuaji.com.cn$1/ permanent; 
}
三級域名跳轉

if ($http_host ~* "^(.*)\.i\.zzvips\.com$") { 
rewrite ^(.*) http://top.yingjiesheng.com$1/; 
break; 
}
域名鏡向

server 

listen 80; 
server_name mirror.zzvips.com; 
index index.html index.htm index.php; 
root /opt/lampp/htdocs/www; 
rewrite ^/(.*) http://www.ythuaji.com.cn/$1 last; 
access_log off; 
}
某個子目錄作鏡向

location ^~ /zhaopinhui { 
rewrite ^.+ http://zph.zzvips.com/ last; 
break; 
}
discuz ucenter home (uchome) rewrite

rewrite ^/(space|network)-(.+)\.html$ /$1.php?rewrite=$2 last; 
rewrite ^/(space|network)\.html$ /$1.php last; 
rewrite ^/([0-9]+)$ /space.php?uid=$1 last;
discuz 7 rewrite

rewrite ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2 last; 
rewrite ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3 last; 
rewrite ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3 last; 
rewrite ^(.*)/profile-(username|uid)-(.+)\.html$ $1/viewpro.php?$2=$3 last; 
rewrite ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3 last; 
rewrite ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2 last;
給discuz某版塊單獨配置域名

server_name bbs.zzvips.com news.zzvips.com; 

location = / { 
if ($http_host ~ news\.zzvips.com$) { 
rewrite ^.+ http://news.zzvips.com/forum-831-1.html last; 
break; 

}
discuz ucenter 頭像 rewrite 優化

location ^~ /ucenter { 
location ~ .*\.php?$ 

#fastcgi_pass unix:/tmp/php-cgi.sock; 
fastcgi_pass 127.0.0.1:9000; 
fastcgi_index index.php; 
include fcgi.conf; 


location /ucenter/data/avatar { 
log_not_found off; 
access_log off; 
location ~ /(.*)_big\.jpg$ { 
error_page 404 /ucenter/images/noavatar_big.gif; 

location ~ /(.*)_middle\.jpg$ { 
error_page 404 /ucenter/images/noavatar_middle.gif; 

location ~ /(.*)_small\.jpg$ { 
error_page 404 /ucenter/images/noavatar_small.gif; 

expires 300; 
break; 

}
jspace rewrite

location ~ .*\.php?$ 

#fastcgi_pass unix:/tmp/php-cgi.sock; 
fastcgi_pass 127.0.0.1:9000; 
fastcgi_index index.php; 
include fcgi.conf; 


location ~* ^/index.php/ 

rewrite ^/index.php/(.*) /index.php?$1 break; 
fastcgi_pass 127.0.0.1:9000; 
fastcgi_index index.php; 
include fcgi.conf; 
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 呜呜别塞了啊抽插 | 男生同性啪视频在线观看 | 免费特黄一区二区三区视频一 | 91精品国产色综合久久不卡蜜 | 日本tube24xxxxx | 性插图动态图无遮挡 | 久久学生精品国产自在拍 | 精品久久久久香蕉网 | h黑寡妇一级毛片 | a天堂在线视频 | 四虎成人影院 | 亚洲国产三级在线观看 | 欧美人与物videos另类3d | 美女做又爽又黄又猛 | 欧美国产精品 | 国产成人福利色视频 | 欧美日韩国产一区二区三区在线观看 | 成人国产一区二区 | 日韩精选在线 | 亚洲七七久久综合桃花 | 大乳孕妇一级毛片 | juliaann厨房大战 | 日本搜子同屋的日子2国语 日本爽p大片免费观看 | 午夜影院免费入口 | 99在线精品日韩一区免费国产 | 国产精品香蕉夜间视频免费播放 | 国产乱子伦一区二区三区 | 国产偷窥女洗浴在线观看亚洲 | 精品国语国产在线对白 | 亚洲国产精品牛在线 | 色图片小说 | 精品久久久噜噜噜久久7 | 欧美性野久久久久久久久 | 亚洲六月丁香婷婷综合 | 爽好舒服使劲添高h视频 | 嫩草蜜桃 | 特级毛片免费视频观看 | 色综合天天综合网国产人 | 亚洲第一区se | 国产一二在线观看视频网站 | 免费看美女被靠到爽 |