Назад | Перейти на главную страницу

Конфигурация Nginx для подпапки Magento мульти-хранилища

Я перехожу из поддомена в подпапку.

У меня есть несколько подпапок для нескольких стран. Поменял домен в администрации Magento. Но перезапись Nginx, похоже, не работает. У меня есть 1 установка Magento на моем сервере, и я хочу использовать / uk и / us.

Страница загружается, но все страницы выдают ошибку 404.

Я провел много часов в Google, но не могу найти рабочую конфигурацию. Надеюсь, кто-нибудь сможет подсказать.

Это мой конфиг:

server {
listen 443 ssl http2;   
root /home/domain_com/public_html/;
server_name www.domain.com/uk;
if ($http_host = cache.domain.com) {
rewrite  (.*)  https://www.domain.com$1 permanent;
}
if ($http_host = uk.domain.com) {
rewrite  (.*)  https://www.domain.com/uk$1 permanent;
}
location / {
index index.html index.php;
try_files $uri $uri/ @handler;
expires 30d;
}
location /downloader/ {
allow xx.xx.xx.xx;
deny all;
}
location ~ ^/(app|includes|lib|media/downloadable|pkginfo|report/config.xml|var)/ { internal; }
location /var/export/ { internal; }
location /. { return 404; }
location @handler { rewrite / /index.php; }
location ~* .php/ { rewrite ^(.*.php)/ $1 last; }
location ~* .php$ {
if (!-e $request_filename) { rewrite / /index.php last; }
expires off;
fastcgi_pass domain;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_param MAGE_RUN_CODE ic_uk;
fastcgi_param MAGE_RUN_TYPE website;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
fastcgi_read_timeout 60;
include /etc/nginx/fastcgi_params;
    }
}

В вашей конфигурации много проблем. Не знаю, где вы его нашли, но я бы посоветовал вам больше туда не ходить.

Первый:

location /. { return 404; }

Он будет соответствовать всему, кроме домашней страницы. Непонятно, зачем это вообще нужно.

Второй:

server_name www.domain.com/uk;

Это явно неверно, так как / не может появляться в именах хостов. Измените это на что-то подходящее.

Третий:

location @handler { rewrite / /index.php; }

Вы отправляете сюда все, что не является статическим ресурсом из вашего try_files, но перезапись соответствует только URL-пути /. Итак, опять же, вы должны ожидать получать 404-е от всего, кроме домашней страницы. Это можно тривиально исправить, изменив его на ^, который будет соответствовать всему.

Также непонятно, почему вы просто не переходите напрямую в FastCGI из этого location. Остальные избыточны.


Я вижу только очевидные проблемы, которые вообще не позволяют конфигурации работать. Здесь все еще есть много других плохих практик (например, неправильное использование if), которую вы также должны очистить позже.