Перенаправить все http: // запрос на https: //

22

Ранее я отправил этот вопрос: /programming/36104047/how-to-redirect-all-http-requests-to-https-on-magento, но не получил никакой реакции.

Вот URL моего сайта: www.trendy-mode.nl, который перенаправит вас на: https://www.trendy-mode.nl/

Теперь проблема в том, что ссылка в меню или любые другие суб-ссылки не перенаправлены с помощью https://

EX:
есть меню вроде - NIEUW | КЛЕДИНГ | ШОЕНЕН | АКСЕССУАРЫ и т. Д.
Если вы нажмете на меню 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]

Или, если вы используете обратный прокси, такой как Varnish:

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

Это связано с тем, что запросы от Varnish к Magento будут выполняться без SSL (HTTP), но Varnish устанавливает заголовок X-Forwarded-Proto равным «https», если исходный запрос был сделан с SSL (HTTPS).

Фабиан Шменглер
источник
@Abhishek Я только что проверил ваш сайт, и поскольку он еще не работает - вышеприведенные инструкции Fabians верны ... но следует также сказать, что эти 2 строки должны быть добавлены в файл .htaccess в корне вашей установки magento, но НЕ вверху (обычно ) но как уже упоминалось ниже, сразу после RewriteEngine On. То, как я это сделал, немного отличается тем, что моя вторая строка гласит: RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Петр Свегруп,
Кто-нибудь испытывал негативное влияние на рейтинг страницы Google после полного перехода сайта magento в https?
Пай
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

Smartie
источник
9

Установите базовый URL для безопасного и ненадежного в бэкэнде. Установите yes на использование защищенного URL-адреса в веб-интерфейсе.

Затем отредактируйте ваше приложение / etc / local.xml и включите это

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

Или, по крайней мере, вставьте внешний интерфейс дерева XML и опустите его между тегами config.

Майкл
источник
Это исправило мою проблему. Я все правильно настроил, но некоторые URL-адреса все еще использовали http вместо https.
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

Я думаю, что самым простым способом было бы изменить незащищенный базовый URL-адрес на https, поскольку magento затем перенаправляет все «незащищенные» запросы на этот URL-адрес, а также создает ссылки с этим URL-адресом.

Вы можете изменить базовый URL в системе -> Конфигурация -> Общие -> Веб

Дэвид Верхолен
источник
Спасибо за ваш реплей. Я сделал это, но теперь, если вы откроете эту ссылку: www.trendy-mode.nl/damesschoenen/slippers, вы перейдете на домашнюю страницу. есть какое-то решение?
Абхишек Кумбхани
хм, это странно :) Вы не возражали против косой черты в базовом URL? Я думаю, что этот вопрос действительно интересен, так как в будущем (или, может быть, уже сейчас) будет наиболее вероятно, что вся страница будет использовать https. Я могу спросить моего коллегу завтра, так как он уже сделал это для магазина
magento
хотя решение fschmengler должно работать, я думаю, ответ @Michael кажется правильным способом сделать это, если оно работает
Дэвид Верхолен
Ну, ответ fschmenglers не является ложным. Меня просто раздражает стратегия обновления Magentos, поскольку она касается .htaccess и index.php, но не local.xml. Так что это больше «обновление сохранить» imho
Майкл
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]
Mani
источник