我有一个build立在Kirby平面文件CMS上的网站,并且它在根目录中运行得很好,但是我试图让一个在上面的项目的子目录(称为crm )中运行的FlightPHP实例。 这个FlightPHP实例将处理表单提交,所以我需要能够正确映射url。
使用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"; } }
我已经尝试了很多来自类似post的方法,但没有一个能正常工作。
尝试用这个替换你的位置^〜/ crm块
location /crm { try_files $uri $uri/ /crm/index.php?$args; }
如果那个没有解决它尝试
location /crm { try_files $uri $uri/ /crm/index.php?$uri; }