Рейтинг:0

Перенаправление всех страниц без www и одной страницы на www

флаг cn

Я хочу перенаправить все мои внутренние страницы (например: пример.com/о) на их версию без www, но я хочу свою домашнюю страницу (https://example.com) для перенаправления на его www-версию (https://www.example.com).

Я искал много статей в Интернете, но это не сработало.

Если установить оба правила, то внутренние страницы перенаправляются нормально, но домашняя страница зацикливается.

Я не знаю, как кодировать, поэтому, пожалуйста, это просьба, если бы вы могли написать код, который я должен вставить в свой .htaccess файл

В настоящее время я настроил все страницы для перенаправления на их версии без www (даже на домашнюю страницу) с помощью следующего кода:

<IfModule mod_rewrite.c>
RewriteEngine включен
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
Правило перезаписи ^(.*)$ https://example.com/$1 [L,R=301]
</ЕслиМодуль>
# НАЧАТЬ
<IfModule mod_rewrite.c>
RewriteEngine включен
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Правило перезаписи. index.php [Л]
</ЕслиМодуль>
# КОНЕЦ
Рейтинг:0
флаг kz

Я искал много статей в Интернете, но это не сработало.

Наверное, потому что это странное требование. Я был бы удивлен, если бы вы могли найти какой-либо код, который вы могли бы просто скопировать/вставить, который делает это.

Однако, предполагая, что вы создаете правильный абсолютный URL-адрес для всех своих внутренних ссылок (поскольку вы не должны внутренне ссылаться на URL-адрес, который перенаправляет), тогда это относительно тривиально реализовать в .htaccess если вы понимаете свои существующие директивы.

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
Правило перезаписи ^(.*)$ https://example.com/$1 [L,R=301]

Регулярное выражение .* в Правило перезаписи шаблон совпадения все. В частности, он соответствует 0 или большему числу любых символов, как это обозначено * квантор. Он соответствует пустому URL-пути (т. е. «домашней странице») и всем непустым URL-путям (т. е. всему остальному).

Вам нужно изменить приведенное выше регулярное выражение, чтобы оно соответствовало непустому URL-пути (т.е. всему, кроме домашней страницы). И создайте другое правило (в другом направлении), которое соответствует только пустому URL-пути.

(Это использует тот факт, что mod_dir обслуживает index.php для запросов на домашнюю страницу, а не директивы mod_rewrite, которые следуют.)

Чтобы сопоставить 1 или более (т. е. непустой URL-путь), вы можете использовать + (плюс) квантификатор вместо * (звездочка/звездочка).

Например:

# Перенаправить все, кроме домашней страницы (с www на без www)
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
Правило перезаписи ^(.+)$ https://example.com/$1 [L,R=301]

# Перенаправить только домашнюю страницу (с не-www на www)
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^$ https://www.example.com/ [L,R=301]

Вам нужно будет очистить кеш браузера перед тестированием, так как более ранняя 301 (постоянная) переадресация, которая перенаправляла домашнюю страницу с www на не-www, была кэширована браузером.

Сначала протестируйте с 302 (временной) переадресацией, чтобы избежать потенциальных проблем с кэшированием.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.