如何获得Nginx的别名工作?

我有这个定义一个别名(最新的迭代):

location ~ /xxx/(.*).php($|/) { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /xxx/web/blog/xxx/$1.php; include fastcgi_params; } location ~ /xxx(.*) { autoindex on; alias /xxx/web/blog/xxx$1; } 

要尝试在xxx.comxxx目录中定义一个wordpress安装(例如)。

现在,当我拿出PHPpath时,我得到的index.php文件下载到我的电脑,但一旦我添加PHP的FPM,由PHP位置定义,我得到:

在读取来自上游的响应标题时,FastCGI以stderr发送:“主脚本未知”

在日志中。 我已经尝试在错误日志中的debugging模式,但它看起来不错。

我有一个PHP位置已经在做:

 location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; try_files $uri =404; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /xxx/web/live/backend/web/$fastcgi_script_name; include fastcgi_params; } 

我使用return 200 "/xxx/web/blog/xxx/$1.php";检查了/xxx/web/blog/xxx/$1.php的输出return 200 "/xxx/web/blog/xxx/$1.php"; 看起来很完美

我应该补充一点,我一直在SE上search大约3个小时,而在这个问题上没有一个post实际上解决了我的问题,其中包括:

  • https://stackoverflow.com/questions/8300022/nginx-serving-a-directory-as-an-alias
  • https://stackoverflow.com/questions/21399789/nginx-how-to-create-an-alias-url-route
  • 在stderr中发送的Nginx 1 FastCGI:“主脚本未知”
  • debuggingnginxconfiguration文件的最佳方法?

那么为什么不能这样工作呢?

好的,所以我决定回到这里的基础知识,并将代码钻到:

 location /xxx { autoindex on; alias /xxx/web/blog/xxx; location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 

我不知道为什么,但它的工作,我相当cetain我已经尝试了一些非常接近这一点。

我想这是因为我添加了: try_files $uri $uri/ /index.php?$args; 但后来我删除了,它仍然工作。

如果有人能解释其中的别名和PHP如何工作好一点,为什么它不适合我,那么我会接受这个答案,因为这实际上是一个问题。