Remove a barra final NGINX 2 sites de um domínio

1

Eu tenho seguindo a configuração do 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;
        }
    }
}

Assim, como você pode ver, há dois sites no esquema a seguir:

sk
-- ...
-- webroot
en
-- ...
-- webroot

primeiro site (sk) é ligado em '/' URI que funciona bem, domain.tld

mas tudo com prefixo "en" falha. domain.tld / pt

Existem dois problemas principais com a versão EN

  • "en" é redirecionado para "en /" como posso evitar isso?
  • a regravação de URL não funciona, portanto domain.tld / en / moribundus retorna 404.
por xrep 09.04.2017 / 19:33

1 resposta

0

Usar alias e try_files no mesmo bloco location pode causar problemas devido a um problema de longa data .

Além disso, seu comportamento padrão é enviar /en/ para /index.php , que é o URI errado e deve ser /en/index.php .

Tente:

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

EDITAR:

Uma forma possível de corrigir o redirecionamento /en to /en/ é adicionar outro bloco location :

location = /en {
    rewrite ^ /en/ last;
}
    
por 09.04.2017 / 20:11