Я перехожу из поддомена в подпапку.
У меня есть несколько подпапок для нескольких стран. Поменял домен в администрации 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
), которую вы также должны очистить позже.