歡迎您光臨本站 註冊首頁

請教配置的nginx的部分rewrite的規則為什麼沒有生效?

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

請教配置的nginx的部分rewrite的規則為什麼沒有生效?

配置了一個nginx的站點,需求是這樣的:
1.  訪問http://www.abc.com/images/*,對應站點根目錄下的/view/images/*。
2.  訪問http://www.abc.com/css/*,對應站點根目錄下的/view/css/*。
3.  訪問其他文件,均從站點根目錄下的/control/*獲取。

我配置的rewrite規則如下: server
{
        listen       80;
        server_name www.abcd.com;
        root /www/abcd;
        index index.html index.php;
      
        rewrite ^/images/(.*)$ /view/images/$1 last;
        rewrite ^/css/(.*)$ /view/css/$1 last;
        rewrite ^/(?!control/)(.*) /control/$1 last;


        error_page 404   /control/index.php;
        location ~ .*\.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include  fastcgi_params;
        }
}但是配置生效后,訪問頁面時,發現頁面中的images和css,都找不到,從錯誤日誌中發現,都執行了這條rewrite規則: rewrite ^/(?!control/)(.*) /control/$1 last;
上面的兩條根本沒有發生作用,不知道是怎麼回事?

錯誤日誌如下:

2010/04/07 06:05:39 12949#0: *11526 open() "/www/abcd/control/view/css/style.css" failed (2: No such file or directory), client: 111.12.153.106, server: abcd.com, request: "GET /css/style.css HTTP/1.1", host: "abcd.com", referrer: "http://abcd.com/login.php"
2010/04/07 06:05:39 12949#0: *11522 open() "/www/abcd/control/view/images/logo.gif" failed (2: No such file or directory), client: 111.12.153.106, server: abcd.com, request: "GET /images/logo.gif HTTP/1.1", host: "abcd.com", referrer: "http://abcd.com/login.php"

請教大家,看看我配置的rewrite哪裡出現了問題?謝謝!
《解決方案》

Nginx Rewrite 規則:
if ($host ~* ^(.*?)\.domain\.com$)
{
set $var_wupin_city $1;
set $var_wupin 『1′;
}
if ($host ~* ^qita\.domain\.com$)
{
set $var_wupin 『0′;
}
if (!-f $document_root/market/$var_wupin_city/index.htm)
{
set $var_wupin 『0′;
}
if ($var_wupin ~ 『1′)
{
rewrite ^/wu/$ /market/$var_wupin_city/index.htm last;
}

[火星人 ] 請教配置的nginx的部分rewrite的規則為什麼沒有生效?已經有555次圍觀

http://coctec.com/docs/service/show-post-18316.html