Перенаправити всі 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?
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-адресі в інтерфейсі в бекенді.

Потім відредагуйте додаток / 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. Я можу попросити свого колегу завтра, оскільки він уже зробив це для магазину
магенто

хоча рішення 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]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.