301 перенаправление для index.html и всех http, https, www и не-www версий URL-адреса домашней страницы на https://www корневой URL-адрес через htaccess

Я хочу перенаправить 301 следующие URL-адреса через файл htaccess

Это означает, что мне нужно принудительно установить версию SSL (https) и принудительно использовать www на всем веб-сайте.

Кроме того, я также хочу перенаправить 301 index.html на версию https и www URL-адреса домашней страницы.

Я хочу перенаправить 301 следующие URL-адреса:

https://www.example.com/index.html
https://example.com/index.html
https://example.com
http://www.example.com/index.html
http://example.com/index.html
http://www.example.com
http://example.com
www.example.com
example.com

К

“https://www.example.com”

В дополнение к этому мне нужно, чтобы все URL-адреса сайта были перенаправлены на версию https://www следующим образом:

“https://www.example.com/new-site.html”

Вот что я использую прямо сейчас:

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

RewriteCond %{HTTP_USER_AGENT} libwww-perl.* 
RewriteRule .* ? [F,L]
RewriteBase /
RewriteRule ^index\.html$ / [NC,R,L]

Но приведенные выше правила, кажется, дают мне перенаправление 301---> 302-----200 ok для 2 URL-адресов с /index.html и 301 для остальных.

Это дает 302 от:

“https://www.example.com/index.html”

К этому

“https://www.example.com/“

Спасибо.

Добро пожаловать в СО. Пожалуйста, добавьте четкие подробные образцы URL-адресов, например, с какого URL-адреса на какой URL-адрес вы хотите перенаправить / переписать, заключив их в теги кода для лучшего понимания вашего вопроса.

RavinderSingh13 11.12.2020 16:08

Извините, я отредактирую это

Adam Hill 11.12.2020 16:14

Извините, я на мобильном телефоне и не имею полного функционала.

Adam Hill 11.12.2020 16:30

Комментарии не предназначены для отображения вопроса/усилий, как просили ранее, пожалуйста, обновите свой вопрос, спасибо.

RavinderSingh13 11.12.2020 18:14

Это не позволит мне опубликовать более 8 ссылок, даже если это ссылки на example.com.

Adam Hill 11.12.2020 18:15

может быть, вам не хватает CODE TAGS, поэтому он не разрешает это, попробуйте использовать CODE TAGS вокруг ссылок или вашего файла htaccess в вашем вопросе.

RavinderSingh13 11.12.2020 18:16

Можете ли вы вставить тег кода сюда, чтобы я мог скопировать его и использовать, не позволяйте мне использовать его <>

Adam Hill 11.12.2020 18:18

Посмотрите https://www.website.com это в вашем вопросе, как это выглядит сейчас, обведите их обратными кавычками.

RavinderSingh13 11.12.2020 18:19

Спасибо. Готово. Фу

Adam Hill 11.12.2020 18:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
9
433
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Хорошо, я сам разобрался:

Вот как это будет работать, просто нужно добавить R=301 в последнее правило, а не просто R

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]

RewriteCond %{HTTP_USER_AGENT} libwww-perl.* 
RewriteRule .* ? [F,L]
RewriteBase /
RewriteRule ^index\.html$ / [NC,R=301,L]
Ответ принят как подходящий

Все это можно сделать в одном правиле:

RewriteEngine On

## add www and turn on https in same rule
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{REQUEST_URI} /index\.html$ [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule (?:^|(.+)/)(?:index\.html)?$ https://www.%1/$1 [R=301,L,NE]

Спасибо, этот тоже проверю.

Adam Hill 12.12.2020 23:40

Извините, но это не перенаправляет index.html на корневой URL <https://www>.

Adam Hill 13.12.2020 14:09

Это работает, но добавляет косую черту в конце URL-адреса. Можно ли убрать косую черту в конце?

Adam Hill 25.06.2022 15:31

Да, конечно, проверьте мой обновленный ответ

anubhava 25.06.2022 16:35

Спасибо... Я попробовал, результат тот же: с косой чертой в конце

Adam Hill 27.06.2022 16:08

Если $1 указывает на реальный каталог, то модуль Apache mod_dir добавляет косую черту в конце по соображениям безопасности. Почему вы хотите удалить / из URI запроса каталога?

anubhava 27.06.2022 16:20

Другие вопросы по теме