Nginx重写相当于apache重写

时间:2014-09-23 19:28:26

标签: apache .htaccess mod-rewrite nginx

我正在尝试更改新Nginx服务器上的配置,以便它与我当前的Apache设置相匹配。 目前我正在使用这个htaccess文件:

RewriteEngine on  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule ^(.*) index.php?url=$1 [L,QSA]  

我找到了一个可以将其“转换”为Nginx等价物的转换器。我尝试过以下方法:

location / {
    if (!-e $request_filename){
     rewrite ^/(.*) /index.php?url=$1 break;
    }
    try_files $uri $uri/ =404;
}

但是当我尝试设置像这个http://domain.tld/something这样的url查询时,我的php文件会被返回并下载,而这不应该发生。

我期望发生的是当输入http://domain.tld/something这样的网址时,它会被视为http://domain.tld/index.php?url=something

有人能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:0)

与Apache不同,nginx并不是开箱即用的,可以运行PHP。你需要设置一个处理程序来处理php文件,否则nginx将像任何常规文件一样提供它们。

请参阅:Nginx downloads php instead of running it

另外:查看NGINX documentation on using fast-cgi to run php