2014-09-23 54 views
0

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

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我的PHP文件的URL查询得到返回和下载,是不应该发生的。

我期待发生的事情是当进入像http://domain.tld/something的URL它被当作http://domain.tld/index.php?url=something

谁能告诉我什么,我做错了什么?

回答

0

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

请参见:Nginx downloads php instead of running it

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

+0

嗨,乔恩。谢谢回复。我得到了脚本的下载部分。我原来是其他代码中的错误。但是我的重写问题仍然存在 – madsobel 2014-09-23 20:23:20

+0

@madsobel NGINX重写很好,你清除了浏览器的缓存吗? – 2014-09-23 20:28:23