安全套接字层(SSL)已成为电子商务网站的一个重要方面。SSL确保客户与网站之间的双向通信在整个交易期间保持安全。
使用SSL保护网站表明网站所有者非常重视保护客户的个人信息。就SERP(搜索引擎结果页面)的标准而言,拥有SSL的网站排名越来越高。
常见的Magento SSL问题及其解决方案
安装和维护SSL证书可能是网站所有者的麻烦。如果处理不当,该问题可能严重妨碍访客的体验。结果是网站的收入和声誉显著降低。
使用Magento SSL时,网站所有者应确保:
- SSL已正确安装
- 安全URL已设置
- 安全URL在前端和后端实现
- SSL证书设置为包括www
- 网站里没有不安全的链接
现在将讨论困扰网站的最常见的Magento SSL相关问题。此外,我还将提供解决问题的方法。
1. Magento SSL无效
按照以下步骤从Magento后台激活SSL :
- 导航到 System > Configuration > General > Web
- 单击"Secure"选项卡
- 启用"Use Secure URLs in the frontend"选项为"yes"
- 启用"Use Secure URLs in the Admin" 选项为"yes"
- 检查offload header为"SSL_OFFLOADED"
激活Magento SSL后,网站的URL将从"HTTP" 更改为"HTTPS"
如果问题仍然存在,则问题可能出在数据库层上。请按照以下步骤来解决问题:
- 选择数据库表"core_config_data"
- 运行查询:"Select * from core_config_data where path = ‘%web/secure/base_url%’;"
- 检查列值。如果是"HTTPS",则表示后台设置已完成。
如果SSL仍无效,则您的网站的SSL设置存在问题。有时,在成功安装和激活SSL后会出现此问题。Ajax调用或第三方URL调用中的问题也可能导致此问题。以下是如何解决这些问题:
Ajax 调用
如果Ajax调用中存在任何设置问题,请更改以下代码:
echo Mage::getUrl(‘MYMODULE/MYCONTROLLER/MYACTION’, array(‘_secure’ => Mage::app()->getStore()->isCurrentlySecure()));
第三方URL调用
替换掉不是"https"的第三方URL,比如"HTTPS://www.example.com",替换成"HTTPS://www.example.com"
2.Magento SSL结账页面重定向
当Magento SSL无法正常工作时,会出现此问题。在许多情况下,结帐页面会被重定向到其他页面,例如主页或index页面。
以下是修复结帐重定向问题的过程:
- 在Magento网站中安装SSL证书。
- 导航到 Admin > System > Configuration > General > Web
- 转到"secure settings"并将base URL更改为"HTTPS://"
- 保持"Base link URL"为“{{secure_base_url}}”
- 保持Skin, Media, and JavaScript设置为“{{secure_base_url}}skin/etc”
- 选择“Use Secure URL for frontend”为"yes"
- 最后,单击"Save"以应用设置。
以上过程适用于所有Magento版本。
3.无法获得本地颁发者证书
若要解决此问题,请按照下列步骤操作:
- 创建证书到本地副本并将其保存在服务器上的安全位置。
- 如果您使用的是Linux,请将文件保存在:"/etc/ssl/example_com.crt "
- 在服务器(以apache为例)中正确配置:
ServerName example.com DocumentRoot /var/www/ SSLEngine on SSLCertificateFile /etc/ssl/example_com.crt SSLCertificateKeyFile /etc/ssl/private/example_com.key SSLCertificateChainFile /etc/ssl/example_com.ca-bundle - 根据保存文件的位置更新文件。
- 最后,重启服务器以更改应用配置。
4.安装Magento SSL使后台无法访问
有两种方法可以解决这个问题:
- 手动将"core_config_data"表中的"web/secure/use_in_adminhtml"值更改为"0";或执行SQL语句"INSERT INTO core_config_data (scope,scope_id,path,value) VALUES ('default',0,'web/secure/use_in_adminhtml',1);"
- 改回表中的URL为“HTTP://your.domain.com/”
通过删除“/var/cache”文件清除magento缓存
5.使用SSL ,magento页面显示404 Page Not Found
SSL有自己的配置文件,有时当SSL不能正常工作时,它可能会给出404(Page not found)错误。通常,文件如下:
“sudonano /etc/apache2/sites-available/default-ssl”您需要将“AllowOverride None”更改为“AllowOverride All”,然后重新启动服务器。
sudo /etc/init.d/apache2 restart
重新启动服务器后,您将看到所有页面都正常工作。如果您收到任何与页面内容相关的错误,请检查页面上的任何外部URL。尝试消除外部URL并仅包含相对URL。
6.在后台使用Magento SSL时出现403(Forbidden)错误
在以下情况下,有时会故意返回错误代码403(Forbidden):
- 用户没有进去特定页面的权限。
- 用户正在尝试访问已将autoindex设置为off的目录。
- 用户正在尝试访问只能在内部访问的文件。
但是,出于本文的目的,我将讨论无意中发生错误的情况。
权限未正确设置
这是此问题背后最常见的原因。如果要提供文件,则服务器必须读取并执行文件的分层目录中的权限。例如:
对于/usr/share/myfiles/image.jpg,服务器应具有/,/ usr,/ usr / share和/ usr / share / myfiles的读取和执行权限。如果您不希望看到此错误,则需要对目录使用标准755,对文件使用644。
您可以使用namei来检查路径的权限:
f: /var/www/vhosts/example.com drwxr-xr-x root root / drwxr-xr-x root rootvar drwxr-xr-x www-data www-data www drwxr-xr-x www-data www-datavhosts drwxr-xr-xmconnectmconnect example.com
目录索引尚未正确定义
标准PHP设置的索引指令是:
"index index.html index.htm index.php;"
在上面的示例中,服务器将首先提供index.html,然后是index.htm,最后是index.php。如果找不到所有上述目录或没有响应,则返回403 forbidden错误。
7. HTTP与Https重复内容问题
Http和HTTPS被视为单独的端口。但是,搜索引擎会将这两个版本的内容视为重复内容。从SEO的角度来看,这是一个严重的问题。此问题有3中修复方法:
规范链接元素
规范链接元素被添加到网页的head标签中:
<link rel="canonical" href="HTTP://www.domain.com/star-wars/toys/cut-outs/luke-skywalker.html"/>
这些链接元素突出显示内容的规范位置。因此,当搜索引擎抓取网站时,只有Https版本会显示在搜索结果中。
为Https提供不同的Robots.txt
在此解决方案中,您允许搜索引擎抓取网站的HTTPS版本。这是你应该做的:
- 使用.htaccess提供两个不同的Robots.txt文件。将常规非安全HTTP文件另存为robots.txt,并将安全HTTPS文件另存为robots_ssl.txt
- 在htaccess文件中添加一下代码:
RewriteEngine on RewriteCond %{SERVER_PORT} ^443$ RewriteRule ^robots\.txt$ robots_ssl.txt [L] RewriteEngine on RewriteCond %{SERVER_PORT} ^443$ RewriteRule ^robots\.txt$ robots_ssl.txt [L]
- 这将改写服务robots_ssl.txt为robots.txt的。
元机器人标签
如果上述两种方法无法解决问题,可以使用Meta Robots标记。此标记允许对页面进行抓爬但不对其编制索引。要使用该标记,以下代码将添加到网页的Head标记中:
<?php if(isset($_SERVER['HTTPS']) &&strtolower($_SERVER['HTTPS']) == 'on') { echo' '. "\n"; } ?> <?php if(isset($_SERVER['HTTPS']) &&strtolower($_SERVER['HTTPS']) == 'on') { echo' '. "\n"; } ?>
8.在Magento管理区域中启用SSL时的无限重定向循环
当您在Magento管理面板中打开SSL时,可能会遇到此问题。
问题可能出在模型app/code/core/Mage/Core/Model/Store.php中
public function isCurrentlySecure() { if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') { return true; } if (Mage::isInstalled()) { $secureBaseUrl = Mage::getStoreConfig('web/secure/base_route_url'); if (!$secureBaseUrl) { return false; } $uri = Zend_Uri::factory($secureBaseUrl); $isSecure = ($uri->getScheme() == 'HTTPS' ) &&isset($_SERVER['SERVER_PORT']) && ($uri->getPort() == $_SERVER['SERVER_PORT']); return $isSecure; } else { $isSecure = isset($_SERVER['SERVER_PORT']) && (443 == $_SERVER['SERVER_PORT']); return $isSecure; } }
当在"core_config_data"表中没有"web/secure/base_route_url",默认的响应"isCurrentlySecure"总是返回false
您可以通过添加服务器变量"HTTPS" 值来修复它 。
如Nginx与PHP-FPM一起使用,将这些行添加到“nginx.conf”:
fastcgi_param HTTPS on;
重新加载服务器,一切都应该正常工作。
9. SSL-HTTPS Magento前端布局问题
使用HTTPS对工作站点的更改包括:
在配置中,
在不安全部分中
基本URL:删除"HTTP"在安全部分
基本URL:添加"HTTPS"然后刷新缓存。
10.启用Magento SSL后,管理员登录失败
在Magento Admin中启用SSL后,通常会出现此问题。以下步骤将解决此问题:
- 进入数据库并进入"core_config_data"表中, 更新"web/secure/use_in_admindata"path中的value为"0"
- 将"web/secure/use_in_frontend"path中的"value"设置为"0"
- 通过使用SSH,登录到主机帐户,并运行命令"rm -rf ~/public_html/magento/var/cache"
使用共享服务器或主机时,需要更改缓存目录。
如何更改Magento基本URL?
可以根据网站的要求设置Magento基本URL。要更改基本URL,请登录Magento管理面板,导航到"System > Configuration > Web > Unsecure > Base URL and System > Configuration > Web > Secure > Base URL"
完成更改后,您需要进入“System > Cache Management”刷新缓存
如果Magento管理面板无法访问,则需要在数据库中进行更改。登录"phpMyAdmin",导航到"core_config_data"表,改变"web/unsecure/base_url" 和 "web/secure/base_url"中的value值
要应用更改,请通过删除var/cache目录中的所有内容来刷新Magento中的缓存
11.结帐时Magento SSL相关警告
当您使用Magento网站时,结帐过程可能需要多次修复和调试。在测试网页时,请密切关注页眉和页脚中的图像,因为它们可以创建大量问题。
要解决此问题,您应该使用图像的直接链接,而不是使用参考或源链接。
(简写图片源链接) (接图像源链接) 这会通知浏览器它应该按照当前区域加载重要的资源。特别是,使用Chrome测试网站,因为它可以检测任何网站中的大多数错误。
这些是一些常见的Magento SSL相关问题的解决方案。我希望您能够自己应用修复程序而不会出现任何问题。如果您遇到问题,请随时与我们联系。
经常问的问题
Q1。什么是SSL?
SSL表示用于使网站安全的安全套接字层。它应该安装在每个电子商务网站中,以确保用户和网站之间的交易过程安全。
Q2。SSL完全免费使用吗?
许多SSL证书提供商对此收费,但是如果您想要免费且可靠的SSL证书,那么请选择Let's Encrypt。
Q3。什么是Robots.txt?
您网站的一个文本文件,用于与网络抓取工具和其他网络机器人进行通信,称为Robots.txt。