【问题标题】:How to use mod_rewrite on an Nginx如何在 Nginx 上使用 mod_rewrite
【发布时间】:2014-03-01 16:09:05
【问题描述】:
我想使用 Nginx 服务器而不是 Apache。在我的.htaccess 文件中,我有这行。
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^.*$ ./nice_urls.php
任何想法如何在 Nginx 上工作?
【问题讨论】:
标签:
php
.htaccess
mod-rewrite
nginx
url-rewriting
【解决方案1】:
Nginx 不支持 .htaccess 文件。
简单的方法是在 nginx 配置文件中为您的 vhost 使用以下规则:
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 配置文件中。