将所有http://请求重定向到https://


22

早些时候我已经发布了这个问题:https : //stackoverflow.com/questions/36104047/how-to-redirect-all-http-requests-to-https-on-magento,但是没有任何反应。

这是我的网站URL:www.trendy-mode.nl,它将重定向到:https : //www.trendy-mode.nl/

现在的问题是菜单链接或其他任何子链接都无法用https://

EX 重定向:
有类似-NIEUW |的菜单。格丁| SCHOENEN |
附件等。 如果单击NIEUW菜单,将打开一个新页面,但不会使用https://

我尝试了很多.htaccess调整,但没有用。有人在这方面帮助我吗?

先感谢您!

Answers:


30

将不安全的基本URL更改为https将更改所有链接,并将非https请求重定向到https://example.com/(主页),因为当基本URL验证失败时,Magento就是这样做的。

因此,这是一个不错的开始,但同时也要将http://example.com/foo/重定向到https://example.com/foo/,您需要通过网络服务器重定向来完成。

例如,在您的顶部添加以下代码.htaccess

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

或者,如果您使用反向代理(例如Varnish):

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

这是因为从Varnish到Magento的请求将没有SSL(HTTP),但是如果原始请求是通过SSL(HTTPS)进行的,则Varnish会将X-Forwarded-Proto标头设置为“ https”。


@Abhishek我刚刚测试了您的网站,因为它尚无法正常工作-上面的Fabians指示是正确的..但还应指出,这两行应添加到magento安装目录的.htaccess文件中,而不是放在顶部(通常不是),但如下所述RewriteEngine On。我做的方式与第二行内容略有不同。RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Peter Svegrup

将magento网站完全移至https之后,是否有人对Google页面排名产生不利影响?
paj '18

10

为了完整起见,我们还做了一些与fschmengler建议的内容非常相似的事情。

RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_METHOD} !=POST
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

我们将其放在.htaccess的下面 RewriteEngine On


9

在后端中将基本网址设置为安全和不安全。在后端的前端使用安全网址设置为是。

然后编辑您的app / etc / local.xml并包含它

<?xml version="1.0"?>
<config>
  <frontend>
     <secure_url>
      <all>/</all>
     </secure_url>
   </frontend>
</config>

或至少将XML树的前端和下层粘贴在config标记之间。


这解决了我的问题。我已将所有设置正确,但某些网址仍使用http而不是https。
mutiemule

我想将指定网址从https重定向到http。那你有什么想法吗?
Sarfaraj Sipai

5

确定System > Configuration > Web > url_options > "Auto-redirect to Base URL = No"。它设置为yes,并导致问题。

将下面的代码放在.htaccess文件中。

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

4

我认为最简单的方法是将不安全的基本URL更改为https,因为magento然后将所有“不安全”的请求重定向到该URL并生成与此URL的链接。

您可以在系统->配置->常规->网络下更改基本URL


谢谢您的回放。.我做到了,但是现在,如果您打开此链接:www.trendy-mode.nl/damesschoenen/slippers,它将跳转到主页。有什么解决办法吗?
Abhishek Kumbhani

嗯,那很奇怪:)您是否介意基本网址中的结尾斜杠?我认为这件事真的很有趣,因为将来(或可能现在已经是?)让seo变得有意义,以便整个页面都使用https。我可以问我的同事明天,因为他这样做了Magento的店已经
大卫Verholen

虽然fschmengler的解决方案应该工作,我认为,@迈克尔的回答似乎是一个正确的方式来做到这一点,如果它的工作原理
大卫Verholen

fschmenglers的答案不是错误的。我只是对Magentos更新策略感到恼火,因为它涉及到.htaccess和index.php,但没有涉及local.xml。因此,更多的是“更新保存”恕我直言
Michael

2

Apache的文档建议不要使用重写:

要将httpURL 重定向到https,请执行以下操作:

 <VirtualHost *:80>
     ServerName www.example.com
     Redirect / https://www.example.com/
 </VirtualHost>

 <VirtualHost *:443>
     ServerName www.example.com
     # ... SSL configuration goes here
 </VirtualHost>

该段应进入主服务器配置文件,.htaccess如问的问题。

本文可能仅在提出问题并回答后才出现,但这似乎是当前的解决之道。


0

将此代码添加到.htaccess文件的顶部

RewriteEngine On
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
# [NC] is a case-insensitive match
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.