Magento getProductUrl()总是返回HTTP

Fra*_*Kim 5 magento

即使我使用HTTPS,Magento的getProductUrl()似乎总是返回一个HTTP URL.我可以通过任何方式自动切换到HTTPS吗?(或让它返回相对协议网址).

我会说这是一个相当"标准"的配置.

基本网址是http://example.com/

安全网址是https://example.com/

在前端使用安全URL是否定的

基本链接网址为{{unsecure_base_url}}

我知道我可以将上面的内容更改为{{secure_base_url}}但是我不想强制从HTTP更改为HTTPS,我只需要它保持相对性.

And*_*kus 13

主要的Magento的好处是,你可以随心所欲地做任何事情:)所以,是的,你可以输出HTTPS产品网址或相关网址.但是,在选择解决方案之前,让我们考虑一下Magento作者的愿景.

前端的HTTPS仅适用于特定区域,如客户帐户,付款方式,结帐等.产品没有任何私密性,这使得必须通过HTTPS查看.

默认情况下,Magento甚至不对上面提到的页面使用HTTPS.要启用HTTPS,必须将"在前端使用安全URL"选项设置为"是".如上所述,这将仅在包含一些私有数据的有限页面中使用HTTPS.

因此,最适合您的解决方案取决于您正在开发的商店的具体情况.

1)如果你想为前端的所有页面使用HTTPS - 那么最好的解决方案是将"https:// ..."放入"基础URL"选项中,以获取"不安全"的网址配置.

2)如果您只想为产品链接打开HTTPS,并且只打开有限数量的页面,那么您可以覆盖该页面的模板以便放置相对URL.实际代码可以以您喜欢的任何方式实现,即使是最简单的已经提出的方法也可以:

echo trim($_product->getProductUrl(),'http:')
Run Code Online (Sandbox Code Playgroud)

3)如果你想为前端的所有产品链接使用HTTPS - 那么最好的方法是覆盖Mage_Catalog_Module_Product_Url模型和更改方法getUrl()- 你需要放在那里

$routeParams['_secure'] = true;
Run Code Online (Sandbox Code Playgroud)

这将生成具有HTTPS协议的所有产品URL.

4)如果您只需要在HTTP页面显示HTTP产品链接,而只在HTTPS页面显示HTTPS产品链接,那么您可以使用方法3)使用更复杂的逻辑:在设置'_secure'参数之前检查当前页面的协议.

希望能帮助到你.