Перенаправити всі 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.