.htaccess — Запуск дополнительного приложения PHP из подкаталога в Nginx

У меня есть сайт, построенный на Kirby простой файл CMS и его запуск в корневом каталоге просто отлично, но я пытаюсь получить экземпляр FlightPHP работает в подкаталоге (называется CRM) вышеуказанного проекта. это 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";
}
}

Я пробовал довольно много подходов из аналогичных сообщений в Интернете, но ни один из них не работает правильно.

2

Решение

Попробуйте заменить блок местоположения ^ ~ / crm этим

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

И если это не решит, попробуйте

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]