Удалить конечную косую черту. NGINX 2 сайта в одном домене

У меня следующая конфигурация NGINX

server {

    listen 80;

    server_name www.cakein.local;

    rewrite_log on;


    # removes trailing slashes (prevents SEO duplicate content issues)
    #if (!-d $request_filename) {
    #    rewrite ^/(.+)/$ /$1 permanent;
    #}

    location /en {

        alias /home/sites/cakein/en/webroot;
        index index.php

        try_files $uri /index.php?$args;

        location ~ ^/en(.*)\.php {

            index index.php;

            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            include /etc/nginx/fastcgi_params;

            fastcgi_param SCRIPT_FILENAME $document_root$1.php;
        }
    }


    location / { 

        root /home/sites/cakein/sk/webroot;

        index index.php index.html;

        try_files $uri /index.php?$args;

        location ~ \.php$ {

            try_files $uri =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            include /etc/nginx/fastcgi_params;

            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
    }
}

, поэтому, как вы можете видеть, есть два сайта в следующей схеме: domain.tld

, но все с префиксом "en" не работают. domain.tld / en

Есть две основные проблемы с версией EN

  • «en» перенаправляется на «en /». Как я могу предотвратить это?
  • Перезапись URL-адреса не работает, поэтому domain.tld / en / moribundus возвращает 404.
1
задан 10 April 2017 в 13:27
1 ответ

Использование псевдонима и try_files в том же месте блока может вызвать проблемы из-за давняя проблема .

Кроме того, по умолчанию вы отправляете / en / на /index.php , который является неправильным URI и должен be /en/index.php .

Попробуйте:

location /en {
    alias /home/sites/cakein/en/webroot;
    index index.php
    if (!-e $request_filename) { 
        rewrite ^ /en/index.php last;
    }
    ...
}

EDIT:

Один из возможных способов исправить / en на / en / перенаправление заключается в добавлении еще одного блока расположения :

location = /en {
    rewrite ^ /en/ last;
}
0
ответ дан 4 December 2019 в 05:02

Теги

Похожие вопросы