Слишком много перенаправлений на установку Magento - Nginx/centos
У меня установлена версия Magento 1.9.3.1. До вчерашнего дня все работало нормально, но теперь главная страница не работает с ошибкой - слишком много перенаправлений.
При дальнейшей проверке в консоли (firebug) я вижу, что все файлы отображаются перемещенными навсегда, а также добавляется дополнительная косая черта /, которая находится в двух косых чертах в конце имени места в адресе браузера. также в консоли все страницы get отображаются как //
Обновить:
Я заметил, что это только home-page/index.php, где я сталкиваюсь с этой проблемой. например, если я захожу на сайт / имя категории, он работает нормально.
Я попытался исправить это с помощью:
if(!$_SERVER['HTTPS'] || strtolower($_SERVER['HTTPS']) != 'on' ){
header("HTTP/1.1 301 Moved Permanently");
header('Location: https://' . str_replace('www.','',$_SERVER['HTTP_HOST']) . $_SERVER['REQUEST_URI']);
exit();
}
но это тоже не сработало.
Дальнейшее обновление:
если я использую domain.com/index или domain.com/index.php/index, я могу получить доступ к сайту без
ошибка слишком много перенаправлений
или же
навсегда перемещена ошибка
Содержимое соответствующего файла conf:
server {
listen 80;
server_name www.sub.domain.com;
#server_name sub.domain.com;
#rewrite ^(.*) http://sub.domain.com$1 permanent;
}
server {
listen 80 default;
listen 443 ssl;
server_name www.sub.domain.com;
#ssl on;
#ssl_certificate /key/domain.com.pem;
#ssl_certificate_key /key/domain.com.key;
# access_log off;
access_log /home/sub.domain.com/logs/access.log;
# error_log off;
error_log /home/sub.domain.com/logs/error.log;
root /home/sub.domain.com/public_html;
index index.php index.html index.htm;
server_name sub.domain.com;
location / {
try_files $uri $uri/ /index.php?$args;
}
1 ответ
Я заметил, что это только
home-page/index.php
где я сталкиваюсь с этой проблемой. Например, если я получу доступsite/category-name
это работает нормально.
Я не могу сказать наверняка, является ли это причиной ваших проблем с перенаправлением (может быть что-то неправильно настроено в другом месте), но у вас есть четыре server_name
директивы (две из которых являются активными двойниками www.sub.domain.com), когда вам нужна только одна.
Попробуйте это отредактировано .conf
файл:
#server {
#listen 80;
#server_name sub.domain.com www.sub.domain.com;
#rewrite ^(.*) http://sub.domain.com$1 permanent;
#}
server {
listen 80 default;
listen 443 ssl;
server_name sub.domain.com www.sub.domain.com;
#ssl on;
#ssl_certificate /key/domain.com.pem;
#ssl_certificate_key /key/domain.com.key;
# access_log off;
access_log /home/sub.domain.com/logs/access.log;
# error_log off;
error_log /home/sub.domain.com/logs/error.log;
root /home/sub.domain.com/public_html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
Заметки
Основное правило для nginx одно server_name
директива на блок сервера (в отличие от Apache с ServerName
а также ServerAlias
). В этой директиве может быть указано несколько имен хостов.
Если вам нужны разные конфигурации для основного домена и дополнительного (под) домена, они должны быть в отдельных блоках сервера, например:
server {
listen 80;
server_name sub.domain.com;
# ...other stuff...
}
server {
listen 80;
server_name www.sub.domain.com;
# ...other stuff...
}