如何在Nginx上使用mod_rewrite

时间:2014-02-05 09:47:59

标签: php .htaccess mod-rewrite nginx url-rewriting

我想使用Nginx Server而不是Apache。在我的.htaccess文件中,我有这一行。

RewriteEngine On  

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f  

RewriteRule ^.*$ ./nice_urls.php

任何想法如何对Nginx起作用?

1 个答案:

答案 0 :(得分:0)

Nginx没有开箱即用的.htaccess文件支持。

简单的方法是在vhost中使用nginx配置文件中的以下规则:

try_files $uri $uri/ /nice_urls.php?$args;

在Nginx上,try_files基本上是典型的mod_rewrite样式文件/目录存在检查的替代品。它应该比使用if更有效 - 见http://wiki.nginx.org/IfIsEvil

此外,您必须配置Nginx以将SCRIPT_FILENAME返回给您的应用程序。 如果你使用fastcgi,你必须检查fastcgi.conf以获得这一行:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
如果该行不存在,请将其添加到fastcgi.conf或vhost配置文件中。