日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

nginx rewrite規(guī)則怎么配置?( 三 )


12將多級(jí)目錄下的文件轉(zhuǎn)成一個(gè)文件,增強(qiáng)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;
13.將根目錄下某個(gè)文件夾指向2級(jí)目錄
如/shanghaijob/ 指向 /area/shanghai/
如果你將last改成permanent,那么瀏覽器地址欄顯是/location/shanghai/
rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;
上面例子有個(gè)問題是訪問/shanghai 時(shí)將不會(huì)匹配
rewrite ^/([0-9a-z]+)job$ /area/$1/ last;
rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;
這樣/shanghai 也可以訪問了,但頁面中的相對(duì)鏈接無法使用,
如./list_1.html真實(shí)地址是/area/shanghia/list_1.html會(huì)變成/list_1.html,導(dǎo)至無法訪問 。
那我加上自動(dòng)跳轉(zhuǎn)也是不行咯
(-d $request_filename)它有個(gè)條件是必需為真實(shí)目錄,而我的rewrite不是的,所以沒有效果
if (-d $request_filename){
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
知道原因后就好辦了,讓我手動(dòng)跳轉(zhuǎn)吧
rewrite ^/([0-9a-z]+)job$ /$1job/ permanent;
rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;
14.文件和目錄不存在的時(shí)候重定向:
if (!-e $request_filename) {
proxy_pass http://127.0.0.1;
}
Nginx和Apache的Rewrite規(guī)則實(shí)例對(duì)比
1.一般簡(jiǎn)單的Nginx和Apache規(guī)則的區(qū)別不大,基本能夠完全兼容,例如:
Apache: RewriteRule^/abc/$/web/abc.php [L]
Nginx:rewrite^/abc/$/web/abc.php last ;
我們可以看出來只要把Apache的RewriteRule改為Nginx的rewrite,Apache的[L]改為last 即可 。
如果將Apache的規(guī)則改為Nginx規(guī)則后,用命令Nginx -t 檢查發(fā)現(xiàn)錯(cuò)誤,則我們可以嘗試給條件加上引號(hào),例如:
rewrite “^/([0-9]{5}).html$”/x.php?id=$1 last;
2.Apache和Nginx的Rewrite規(guī)則在URL跳轉(zhuǎn)時(shí)有細(xì)微區(qū)別:
Apache:RewriteRule ^/html/([a-zA-Z]+)/.*$/$1/[R=301,L]
Nginx:rewrite ^/html/([a-zA-Z]+)/.*$http://$host/$1/ premanent ;
我們可以看到在Nginx的跳轉(zhuǎn)中,我們需要加上http://$host,這是在Nginx中強(qiáng)烈要求的 。
3.下面是一些Apache和Nginx規(guī)則的對(duì)應(yīng)關(guān)系
a.Apache的RewriteCond對(duì)應(yīng)Nginx的if
b.Apache的RewriteRule對(duì)應(yīng)Nginx的rewrite
c.Apache的[R]對(duì)應(yīng)Nginx的redirect
d.Apache的[P]對(duì)應(yīng)Nginx的last
e.Apache的[R,L]對(duì)應(yīng)Nginx的redirect
f.Apache的[P,L]對(duì)應(yīng)Nginx的last
g.Apache的[PT,L]對(duì)應(yīng)Nginx的last
例如:允許指定的域名訪問本站,其他的域名一律轉(zhuǎn)向www.111cn.net
Apache:
RewriteCond %{HTTP_HOST} !^(.*?).aaa.com$ [NC]
RewriteCond %{HTTP_HOST} !^localhost$
RewriteCond %{HTTP_HOST} !^192.168.0.(.*?)$
RewriteRule ^/(.*)$ http://www.111cn.net [R,L]
Nginx:
if( $host ~* ^(.*).aaa.com$ )
{
set $allowHost ‘1’;
}
if( $host ~* ^localhost )
{
set $allowHost ‘1’;
}
if( $host ~* ^192.168.1.(.*?)$ )
{
set $allowHost ‘1’;
}
if( $allowHost !~ ‘1’ )
{
rewrite ^/(.*)$ http://www.111cn.net redirect ;
}
《附錄:nginx全局變量》
經(jīng)常需要配置Nginx ,其中有許多以$ 開頭的變量,經(jīng)常需要查閱nginx 所支持的變量 。Nginx支持的http變量實(shí)現(xiàn)在 ngx_http_variables.c 的 ngx_http_core_variables存儲(chǔ)實(shí)現(xiàn)
ngx_http_core_variables
static ngx_http_variable_tngx_http_core_variables[] = {
{ ngx_string("http_host"), NULL, ngx_http_variable_header,
offsetof(ngx_http_request_t, headers_in.host), 0, 0 },
{ ngx_string("http_user_agent"), NULL, ngx_http_variable_header,
offsetof(ngx_http_request_t, headers_in.user_agent), 0, 0 },
{ ngx_string("http_referer"), NULL, ngx_http_variable_header,
offsetof(ngx_http_request_t, headers_in.referer), 0, 0 },

推薦閱讀