Проблема с использованием mod_rewrite для поддержки канонического URL

У меня возникли некоторые проблемы с mod_rewrite и я подозреваю, что я делаю основную ошибку.

Моя цель состоит в том, чтобы настроить каноническую форму на моем сервере так, чтобы весь доступ (по домену или IP-адресу) осуществлялся без изменений к субдомену https: // и www. например, https://www.example.com/

Вот мои правила переписывания:

Options +FollowSymLinks
RewriteCond %{HTTP_HOST} ^99\.100\.101\.102
RewriteCond %{HTTP_HOST} ^example\.com [nc]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# Force https
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

Кажется, это работает, за исключением: https://example.com/... который не переписывается с www. суб-домен и отключает предупреждение сертификата.

Какую ошибку школьника я сделал?:-)

/ Warren

1 ответ

Решение

Ваш файл работает для меня, если я добавлю это в начале

RewriteEngine on

Но я думаю, что вы включили mod_rewrite по умолчанию.

Так как вы используете постоянный заголовок 301, это может быть проблема с кэшем браузера из более ранних версий правил..?

Вы пытались сбросить кеш браузера? Или попробовал другой браузер, который вы раньше не использовали?

Вы также можете попробовать добавить [OR] в конце первого условия:

RewriteCond %{HTTP_HOST} ^99\\.100\\.101\\.102 [OR]
Другие вопросы по тегам