2012-11-06 100 views
1

我有一个项目,我想要一个子文件夹关闭主域(sitename.org/projectname)。这是一个使用nginx 1.2.0的cakephp 1.3项目。我一直在网上搜索/试用两天的解决方案。我将最终将更多的项目添加为子文件夹,并且每个项目都有自己的根目录。Nginx子文件夹的网站配置

首先,一个工作配置,如果网站被放置在根域。

server { 
listen 80; 
server_name sitename.org 

    location/{ 
      root /export/home/sitename.org/projectname/app/webroot; 
      index index.php index.html index.htm; 
      try_files $uri $uri/ /index.php?$uri&$args; 

      location ~ .*\.php$ { 
        include /etc/nginx/fastcgi_params; 
        fastcgi_pass 127.0.0.1:9000; 
        fastcgi_index index.php; 
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      } 


    } 

} 

我想获得工作时的位置是一个子文件夹(sitename.org/projectname)。我尝试过使用try_files和fastcgi的各种配置,但通常最终会输入“没有指定输入文件”。又名我的配置是错误的。

任何提示将不胜感激。

+0

你真的明白'/index.php?$ uri&$ args'永远不会到达'location /。php $'里面的location/projectname'吗? – VBart

+0

第二部分我忽略了/ projectname简单,因为我无法让它工作,所以我正在寻找示例。即位置/项目名称/.*.php$ –

回答

3

找到我的答案,结合将根改为更高的目录并重写路径。希望这可以帮助那些遇到类似情况的人。

location /projectname { 
      root /export/home/sitename.org/; 
      index index.php index.html index.htm; 
      rewrite ^/projectname/(.*)$ /projectname/app/webroot/$1 break; 
      try_files $uri $uri/ /projectname/app/webroot/index.php?q=$uri&$args; 

      location ~ .*\.php$ { 
        include /etc/nginx/fastcgi_params; 
        fastcgi_pass 127.0.0.1:9000; 
        fastcgi_index index.php; 
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 

      }