首页 > 解决方案 > 页面未在 HTTPS 中正确重定向

问题描述

我在一个centos7上使用nginx服务器和Prestashop 1.7.4.4,也安装了php5.6。我将nginx配置为服务3个网站,一个在wordpress中,一个是Tomcat的代理,一个是prestashop。

没有 HTTPS 一切都很好。我为证书安装 certbot,然后运行它。它完成了与 3 个站点文件配置有关的工作。prestashop 旁边的所有站点现在都可以正常工作,如果尝试使用 HTTP 连接,则会重定向到 HTTPS。

我通过这样的命令行安装 prestashop:

 php index_cli.php --name=name --country=it --domain=www.namedoamin.com --db_server=127.0.0.1 --db_name=dbname --db_user=dbuser --db_password=password

没有 https 它可以正常工作,但是一旦我安装了证书并将流量从 http 重定向到 https,浏览器就会说臭名昭著:

The page isn’t redirecting properly

有很多关于这个问题的信息,但没有一个能帮助我。这是来自 nginx 的块:

server {
    server_name  www.name.com;
    location / {
        root   /var/www/html/website.com;
        index  index.php index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    location ~ \.php$ {
        root           /var/www/html/website.com;
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param QUERY_STRING $query_string;
        include         /etc/nginx/fastcgi_params;
    }



listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/www.namesite.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.namesite.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

server {
if ($host = www.namesite.com) {
    return 301 https://$host$request_uri;
} # managed by Certbot


    server_name  www.namesite.com;
     listen 80;
   return 404; # managed by Certbot
  }

如果我进入管理部分,它可以在 HTTPS 中工作,但如果我尝试进入设置/常规,它会给我 404 未找到,非常奇怪!我不知道该怎么办了我很绝望,我在发布之前尝试了我在互联网上红色的所有技巧。

更新:只要我在几个小时后发布,我就会找到解决方法。这里的问题是由于我不知道的任何原因我无法访问设置/常规。所以我进入数据库,表 pl_configuration 并将调用的字段更改为PS_SSL_ENABLED_EVERYWHEREtruePS_SSL_ENABLED

标签: nginxprestashoplets-encryptprestashop-1.7

解决方案


起初我遇到了同样的问题,但后来通过在每个页面上启用 ssl(首先启用 ssl,然后保存,然后在所有页面上启用 ssl)更改(在管理界面中)商店参数 > 常规,加上清除缓存,然后它工作得很好。
万一有帮助。


推荐阅读