如果文件不存在,则重写

如果用户键入www.mysite.com/foo.php ,如果文件foo存在,服务器用foo响应,但是如果文件不存在,则需要像这样重写: www.mysite.com/url.php?url=foo.php

我试图在nginx上:

  location / { include /etc/nginx/global/*; #try_files $uri $uri/ /index.html; if (!-e $request_filename){ rewrite ^(.*)$ /url.php?url=$1 break; } } 

但不是呈现页面(当文件不存在时),浏览器下载它。 为什么?

您必须添加处理.php文件的位置,如果尚未。 当然,也要设置php-fpm。

 location / { include /etc/nginx/global/*; try_files $uri $uri/ /url.php?url=$uri; } # something about location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } 

就像是

 try_files $uri $uri/ /url.php?url=$uri; 

应该做的伎俩。