У меня следующая конфигурация 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
Использование псевдонима
и 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;
}