2014-12-18 69 views
2

我有一个基于Kirby平面文件构建的CMS网站,它在根目录下运行得很好,但我试图获得一个运行在子目录中的FlightPHP实例(称为crm)上述项目。这FlightPHP实例将处理表单提交,所以我需要能够正确映射网址。从Nginx的子目录运行辅助PHP应用程序

与Apache和htaccess的,它很容易:

# make forms/crm links work 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^crm/(.*) crm/index.php [L] 

我似乎无法得到与Nginx的这方面的工作,这是我到目前为止有:

server { 
    listen 80; 
    listen [::]:80; 
    root /var/www/mainsite; 
    index index.php index.html index.htm; 
    server_name mydomain.com; 
    autoindex on; 
    access_log off; 

    # Kirby Specific Directories 
    rewrite ^/site/(.*) /error permanent; 
    rewrite ^/kirby/(.*) /error permanent;  

    add_header X-UA-Compatible "IE=Edge,chrome=1"; 

    location ~ .php { 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
     fastcgi_hide_header X-Powered-By; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param PATH_INFO $fastcgi_script_name; 
     fastcgi_buffer_size 128k; 
     fastcgi_buffers 256 16k; 
     fastcgi_busy_buffers_size 256k; 
     fastcgi_temp_file_write_size 256k;   
     include fastcgi_params;    
    } 

    location ^~ /crm { 
     root /var/www/mainsite/crm; 

     if (!-e $request_filename) 
     { 
      rewrite ^/(.*)$ /index.php/$1 last; 
      break; 
     } 
    } 

    location/{ 
     try_files $uri $uri/ /index.php?$query_string; 
    } 

    location ~* .(?:xml|ogg|mp3|mp4|ogv|svg|svgz|eot|otf|woff|ttf|css|js|jpg|jpeg|gif|png|ico)$ { 
    try_files $uri =404; 
    expires max; 
    access_log off; 
    log_not_found off; 
    add_header Pragma public; 
    add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 
    }   
} 

我曾尝试在线类似帖子的方法有很多,但没有一个能正常工作。

回答

3

尝试用这种

location /crm { 
    try_files $uri $uri/ /crm/index.php?$args; 
} 

如果更换您的位置^〜/ CRM块无法解决它试图

location /crm { 
    try_files $uri $uri/ /crm/index.php?$uri; 
} 
+0

这工作!感谢mil! – SeanNieuwoudt 2014-12-19 08:43:12

相关问题