我在一个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