У меня есть эта действительно странная проблема, которую я уже потратил много времени на изучение, но не смог найти решение.
По сути, у меня есть несколько доменов, припаркованных на сервере, но для простоты, давайте предположим только 2 домена:
У меня есть 2 требования, которые я хотел бы удовлетворить:
В общем, в одном предложении я хочу, чтобы весь трафик просто https://www.example.co.nz независимо от того, какие шаблоны URL я печатаю в адресной строке.
Я написал .htaccess файл в корне, как это:
SetEnv TZ
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !^on [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.co\.nz
RewriteRule (.*) https://www.example.co.nz/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/(system|lib)(.*)$
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
Следующие работы:
Следующее не перенаправляется:
Мне было интересно, связано ли это с моим htaccess или с самим сервером.
Любая помощь будет высоко ценится.
Нашел проблему.
Редирект на самом деле работает. Вы получите предупреждение о сертификате на https://www.example.com когда вы пытаетесь зайти на сайт. Как только вы примете предупреждение, вы будете перенаправлены на https://www.example.co.nz/.
Это потому, что проверка SSL применяется до того, как .htaccess переписывает. Поскольку для www.example.com не установлен сертификат, вы получите предупреждение.
Единственный способ обойти это — также установить сертификат SSL для www.example.com.
Других решений пока нет …