如果用户输入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;
}
}
但是,浏览器不会渲染页面(当文件不存在时),而是下载它。为什么?
答案1
如果尚未添加,您必须添加处理 .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;
}
答案2
就像是
try_files $uri $uri/ /url.php?url=$uri;
应该可以奏效。