Позвольте мне объяснить мои настройки здесь, у меня есть два домена, для именования их давайте назовем их domain1.com и domain2.com. У меня есть общий хостинг под управлением cPanel.
Domain1.com - мой основной домен, и я использую настройки моей учетной записи хостинга. У меня есть сайт, размещенный в этом домене. Domain2.com устанавливается как дополнительный домен и направляет в папку внутри корня основных доменов. У него есть собственный сайт (блог Ghost).
Это все отлично работает. Однако веб-сайты, размещенные в двух доменах, совершенно разные, и я не хотел, чтобы поддомен работал, но, насколько я могу судить, у доменов дополнений в cPanel должен быть поддомен, чтобы быть добавленным в учетную запись. Варианты перенаправления для поддоменов в cPanel не достаточно хороши для меня, так как я хотел, чтобы любой, кто обращается к скажем domain1.com/domain2, получил ошибку 404, как если бы ее не было. Поэтому я настроил файл .htaccess для домена domain1.com так:
RewriteEngine On
#301 (permenant) redirects all HTTP requests to HTTPS (SSL)
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
#404 redirects all domain.com/subdomain requests
RewriteCond %{HTTP_HOST} ^(www.)?domain1.com$ [NC]
RewriteCond %{REQUEST_URI} ^/domain2/(.*)$
RewriteRule ^(.*)$ - [L,R=404]
#404 redirects all subdomain.domain.com & www.subdomain.domain.com requests
RewriteCond %{HTTP_HOST} ^domain2.domain1.co.uk$ [OR]
RewriteCond %{HTTP_HOST} ^www.domain2.domain1.co.uk$ [OR]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ - [L,R=404]
Это сработало отлично, любой, кто попытается получить доступ к домену 2 через домен1, получит ошибку 404. Но это было до того, как я установил Ghost на domain2. После того, как я установил Ghost, я создал файл .htaccess в папке domain2 внутри корня domain1. Мне пришлось поместить его в него, чтобы запустить Ghost for, так как он использует NodeJS:
RewriteEngine on
RewriteRule ^(.*)$ http://127.0.0.1:55555555/$1 [P,L]
Это также отлично работает, за исключением одного аспекта. Теперь все запросы к домену с использованием domain1.com снова начали работать. Например, если я введу domain2.domain1.com, он покажет мне блог Ghost, где по-прежнему правильно отображалась ошибка 404 Not Found. Почему это так и как мне решить эту проблему?
В качестве примечания я также начал пытаться перенаправить все http-запросы на https. Я добавил следующее в файл htaccess domain1.com, так как хотел, чтобы все запросы на обоих доменах перенаправлялись на https, и я решил, что это необходимо:
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Теперь этот вид работает. Все запросы, какими бы они ни были (например, с или без www), перенаправляются на https, и когда я захожу на него в браузере, я получаю зеленый значок, указывающий, что он защищен с помощью SSL. Опять же, даже с этим предыдущая проблема перенаправления домена все еще не работает. Но у меня есть еще одна странная проблема.
Если я наберу в своем браузере просто «domain1.com» (т.е. без https: // или www. Или их комбинации), в адресной строке отобразится просто «domain1.com», но с зеленым значок и сказать, что это обеспечено. Однако, если я ввожу «domain2.com» (снова без https: // или www и т. Д.), Он делает то же самое , за исключением , он заявляет, что он не безопасный, предлагая это запрашиваемый http.
И все же, если я введу www.domain2.com или http://domain2.com,, это сработает, и я получу защищенный значок. Это очень загадочно. Похоже, что перенаправление https работает на каждый запрос, за исключением только «domain2.com», в то время как любой другой вариант (www.domain2.com, http://domain2.com и т. Д.) Работает нормально. Есть какие-нибудь подсказки? Я имею в виду, что я сделал что-то не так с файлами htaccess, но я не знаю, что, я получил большую часть того, что я вставил в них, от поиска сайтов, таких как Stackexchange, но лично я ничего о них не знаю или как они работают.