前端控制器 PHP 应用程序的 nginx 重写规则

前端控制器 PHP 应用程序的 nginx 重写规则

我正在尝试将 apache .htaccess 规则转换为 nginx 配置。浏览器请求的 URL 如下所示:

  • thedomain.com/user/login
  • thedomain.com/rates/create
  • ETC

需要重写这些 URL,以便:

  • 运行的 PHP 文件是:thedomain.com/index.php
  • URI 被转换为相应的QUERY_STRING
    • ?url=user/login
    • ?url=rates/create

因此在 Apache 中,这个请求thedomain.com/user/login
将在内部重写为如下所示:
thedomain.com/index.php?url=user/login

.htaccess

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-s

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

我目前的 nginx 配置是

server {    
    listen 80;
    server_name thedomain.com;
    root /home/admin/thedomain.com/public;                                                                                     
    index index.php;

    location / { 
        try_files $uri /index.php?url=$uri;
    } 
    location ~ \.php$ {
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;   
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
     } 
}

不幸的是,Nginx 无法以该配置启动,因此我无法运行 nginx 来生成任何有用的日志/调试信息。
我需要做什么才能使此配置正常工作?

相关内容