Конфигурация NGINX для веб-сайта подкаталога CMS не удаляет /index.php/ - PullRequest
0 голосов
/ 31 октября 2018

Моя текущая конфигурация NGINX для размещения веб-сайта в подкаталоге на сервере Docker, похоже, не работает. Я попробовал несколько вещей, но ничего не подвел итог.

server {
    root /www;
    access_log /logs/access.log;
    error_log /logs/error.log debug;
    index index.html index.php;
    if ($bad_referer) { return 444; }

    # Enable PHP with path_info for any php subfolder
    location ~ ^(.+\.php)($|/) {
        fastcgi_pass archives_php:9000;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_intercept_errors on;
        include /nginx/fastcgi_params;
    }


    ###
    ### SPECIFIC SITE
    ###
    # Cockpit
    location = /site { try_files $uri /site/index.php$uri?$args; }
    location /site {
        try_files $uri $uri/ /site/index.php$uri?$args;
        location ~ ^(.+\.php)($|/) {
            fastcgi_pass archives_php:9000;
            fastcgi_index index.php;
            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_intercept_errors on;
            include /nginx/fastcgi_params;
        }
    }
    location /site/cockpit { try_files $uri $uri/ /site/cockpit/index.php; }


    # Assets disabled logging and expiration max
    include /nginx/assets.conf;
}

# Anti spam referrals
include /nginx/referral-spam.conf;

Сайт работает при использовании dubsomain.site.com/site/index.php/page, но это не то поведение, которое я хотел бы иметь.

Похожий веб-сайт с той же CMS, но в корневой папке работает как шарм.

1 Ответ

0 голосов
/ 02 ноября 2018

Если вам нужно добавить часть URI к /site/index.php, вам нужно использовать регулярное выражение.

Например:

location /site {
    try_files $uri $uri/ @rewrite;
}
location @rewrite {
    rewrite ^/site(.*)$ /site/index.php$1 last;
}

location = /site не является необходимым, если только нет определенного действия, которое должен выполнить URI, и ваш второй блок location ~ ^(.+\.php)($|/), который вложен в блок location /site, никогда не вызывается и, будучи идентичным, в любом случае не требуется.

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