RewriteEngine On
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^$ http://example.com/index.php [L,R=301]
Да, это внешнее перенаправление и перенаправляет с http(s)://example.com/
на http://example.com/index.php
. Однако вы перенаправляетесь на HTTP, а не на HTTPS, и вы перенаправляетесь на index.php
, тогда как вы указали index.html
в своем вопросе. Кажется, нет необходимости проверять запрошенное имя хоста, если у вас нет нескольких доменов и, в частности, вы хотите перенаправить только один экземпляр.
Если вы не планируете реализовать HSTS, включите это перенаправление перед общим HTTP на Перенаправление HTTPS и включение канонического имени хоста в перенаправление HTTP на HTTPS.
Например:
RewriteEngine On
# Redirect / or /index.html TO /dir/index.html (HTTPS)
RewriteRule ^(index\.html)?$ https://example.com/dir/index.html [R=302,L]
# Redirect HTTP to HTTPS
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://example.com%{REQUEST_URI} [R=302,L]
Однако, прочитав свой связанный вопрос , внешний " перенаправление "может быть неправильным решением вашей проблемы. Похоже, вы, возможно, «неправильно» связываете файл в документе root, тогда как вы должны ссылаться на файл в подкаталоге? (На самом деле, вы должны исправить свои внутренние ссылки, если это так ...) Однако работоспособным решением может быть внутренняя перезапись запроса на желаемый URL-путь или изменение DirectoryIndex
, если вы делаете ссылку на каталог root документа. Это полностью скрыто от пользователя / клиента - пользователь видит только URL-адрес A, но на самом деле вы обслуживаете URL-адрес B. Но это будет зависеть от структуры вашего сайта.
С другой стороны, внешнее перенаправление стороны, физически отправляет пользователя / браузер на URL-адрес B. Они видят как URL-адрес A (ссылка, на которую они нажимают), так и URL-адрес B (URL-адрес, на который они перенаправляются) - как и бот поисковой системы. Браузеру нужно сделать два запроса. Это потенциально медленнее для пользователей и требует больше работы на вашем сервере (не намного больше, но все же больше).