2013-03-07 64 views
0

我的目标是相匹配的请求开始的那种/key/0/为什么我的nginx位置规则不起作用?

/key/0/(.*) 

page20.html。但是当请求发生时,服务器用404响应:

198.81.214.48 - - [07/Mar/2013:19:13:46 +0000] "GET /key/0/i-digit/index.php/sample-sites HTTP/1.0" 404 169 "-" "-" 

我重新启动了nginx,但仍然没有效果。这是我的配置文件:

server { 
     listen 80 default; 
     server_name localhost; 

     access_log /var/log/nginx/localhost.access.log; 
     location ~ ^/key/0/(.*)$ { 
       alias page20.html#$1; 

     } 

     location/{ 
       root /var/www; 
       index index.html index.htm; 
     } 

     location /doc { 
       root /usr/share; 
       autoindex on; 
       allow 127.0.0.1; 
       deny all; 
     } 

     location /images { 
       root /usr/share; 
       autoindex on; 
     } 

     #error_page 404 /404.html; 

     # redirect server error pages to the static page /50x.html 
     # 
     #error_page 500 502 503 504 /50x.html; 
     #location = /50x.html { 
     #  root /var/www/nginx-default; 
     #} 

     # proxy the PHP scripts to Apache listening on 127.0.0.1:80 
     # 
     #location ~ \.php$ { 
       #proxy_pass http://127.0.0.1; 
     #} 

     # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 
     # 
     #location ~ \.php$ { 
       #fastcgi_pass 127.0.0.1:9000; 
       #fastcgi_index index.php; 
       #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 
       #includefastcgi_params; 
     #} 

     # deny access to .htaccess files, if Apache's document root 
     # concurs with nginx's one 
     # 
     #location ~ /\.ht { 
       #deny all; 
     #} 
} 

回答

0

alias指令正在您的本地文件路径中查找该页面。然而,你没有在该位置块中设置任何根,但是我确实看到,但是你的根目录设置为location /

因此,我相信你要找的是rewrite,而不是别名。

因此,尝试这样的:

location ~ ^/key/0/(.*)$ { 
    set $target $1; 
    rewrite /(.*)$ page20.html#$target permanent; 
}