Я хочу перенаправить 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/“
Спасибо.
Извините, я отредактирую это
Извините, я на мобильном телефоне и не имею полного функционала.
Комментарии не предназначены для отображения вопроса/усилий, как просили ранее, пожалуйста, обновите свой вопрос, спасибо.
Это не позволит мне опубликовать более 8 ссылок, даже если это ссылки на example.com.
может быть, вам не хватает CODE TAGS, поэтому он не разрешает это, попробуйте использовать CODE TAGS вокруг ссылок или вашего файла htaccess в вашем вопросе.
Можете ли вы вставить тег кода сюда, чтобы я мог скопировать его и использовать, не позволяйте мне использовать его <>
Посмотрите https://www.website.com
это в вашем вопросе, как это выглядит сейчас, обведите их обратными кавычками.
Спасибо. Готово. Фу
Хорошо, я сам разобрался:
Вот как это будет работать, просто нужно добавить 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]
Спасибо, этот тоже проверю.
Извините, но это не перенаправляет index.html на корневой URL <https://www>.
Это работает, но добавляет косую черту в конце URL-адреса. Можно ли убрать косую черту в конце?
Да, конечно, проверьте мой обновленный ответ
Спасибо... Я попробовал, результат тот же: с косой чертой в конце
Если $1
указывает на реальный каталог, то модуль Apache mod_dir
добавляет косую черту в конце по соображениям безопасности. Почему вы хотите удалить /
из URI запроса каталога?
Добро пожаловать в СО. Пожалуйста, добавьте четкие подробные образцы URL-адресов, например, с какого URL-адреса на какой URL-адрес вы хотите перенаправить / переписать, заключив их в теги кода для лучшего понимания вашего вопроса.