すべての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 | クレッディング| シェーネン|
ACCESSOIRES など 。NIEUWメニューをクリックすると、新しいページが開きますが、リダイレクトはされません。https://

.htaccessの調整を何度も試しましたが、うまくいきません。これを手伝ってくれる人はいますか?

前もって感謝します!

回答:


30

安全でないベースURLをhttpsに変更すると、すべてのリンクが変更され、https以外のリクエストがhttps://example.com/(ホームページ)にリダイレクトされます。これは、MagentoがベースURL検証が失敗したときに行うためです。

これは良いスタートですが、http://example.com/foo/https://example.com/foo/にリダイレクトするには、ウェブサーバーリダイレクトを介して行う必要があります。

たとえば、次のコードをの上部に追加します.htaccess

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

または、ワニスのようなリバースプロキシを使用する場合:

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の指示は正しいですが、これら2行をmagentoインストールのルートにある.htaccessファイルに追加する必要があります)しかし、下記のように、直後RewriteEngine On。私がそれを行った方法は、私の2行目が読むという点でわずかに異なります。RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
ピーターSvegrup

magentoサイトを完全にhttpsに移行した後、誰かがGoogleページのランクに悪影響を及ぼしましたか?
paj

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

バックエンドでセキュアと非セキュアのベースURLを設定します。バックエンドのフロントエンドでセキュアURLを使用する場合はyesを設定します。

次に、app / etc / local.xmlを編集して、これを含めます

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

または、少なくともXMLツリーフロントエンドを貼り付け、configタグの間に配置します。


これで問題が解決しました。私はすべてを正しく設定しましたが、一部のURLはhttpsではなくhttpを使用していました。
mutiemule

特定のURLをhttpsからhttpにリダイレクトしたい。それについて何かご存知ですか?
サルファラージシパイ

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

magentoがすべての「非セキュア」リクエストをこのURLにリダイレクトし、このURLでリンクを生成するため、最も簡単な方法は非セキュアベースURLをhttpsに変更することだと思います。

システム->設定->一般-> webでベースURLを変更できます


再生していただきありがとうございます。私はやったのですが、今このリンクを開いた場合:www.trendy-mode.nl/damesschoenen/slippersがホームページにジャンプします。解決策はありますか?
アビシェククンバニ

hm thats weird :)ベースURLの末尾のスラッシュは気になりましたか?この問題は、ページ全体でhttpsを使用することが将来的に(または、おそらく今?)seoに関連する可能性が高いため、非常に興味深いと思います。彼はすでにMagentoの店のためにこれを行っていたので、私は明日、私の同僚に尋ねることができます
デビッドVerholenを

fschmenglerのソリューションは、私が考えて動作するはずですが、@Michaelの答えは、それが動作するかどうか、これを行うための正しい方法のように思える
デヴィッド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]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.