我安装的是 Magento 1.9.3.1 版本。直到昨天它还运行良好,但现在首页无法正常工作,并出现错误 - 重定向次数过多。
在控制台(firebug)中进一步检查后,我可以看到所有文件都显示为永久移动,并且还在浏览器地址的站点名称末尾添加了一个额外的斜杠 / ,即两个斜杠。此外,在控制台中,所有获取页面都显示为 //
更新:
我发现只有在 home-page/index.php 上才会遇到这个问题。例如,如果我访问 site/category-name,它就可以正常工作。
我尝试使用以下方法修复该问题:
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
每个服务器块一个指令(与带有ServerName
和 的Apache 不同ServerAlias
)。该指令可以指定多个主机名。
如果您想要对主域和辅助(子)域进行不同的配置,则它们应该位于单独的服务器块中,例如:
server {
listen 80;
server_name sub.domain.com;
# ...other stuff...
}
server {
listen 80;
server_name www.sub.domain.com;
# ...other stuff...
}