請教配置的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;
}