Рейтинг:1

After installing script all subdomains go to the main domain

флаг us

I have a main domain www.example.com.

and the following subdomains under the main domain

support.example.com
test.example.com

Previously both subdomains are working fine.

But after installing a PHP script on the main domain, only the main domain is working and all subdomains are going to main domain.

After checking .htaccess file I found this code:

RewriteEngine  on  
RewriteBase /  
RewriteCond %{THE_REQUEST} /(.+?)\.php[\s?] [NC]  
RewriteRule ^ %1 [R=301,L,NE]  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteCond %{DOCUMENT_ROOT}/$1.php -f  
RewriteRule ^(.+?)/?$ $1.php [L]  
RewriteCond %{HTTPS} off [OR]  
RewriteCond %{HTTP_HOST} !^www\. [NC]  
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [R=301,L]  

IndexIgnore *   

Is this related to the not working subdomains?

флаг kz
Как именно поддомены "не работают"? «все поддомены переходят в основной домен» — вы имеете в виду, что они показывают тот же контент, что и основной домен, или перенаправляются извне на основной домен? Куда указывают поддомены в файловой системе по отношению к основному домену. Установка «скрипта» не может изменить DNS, поэтому я предполагаю, что субдомены указывают либо на одно и то же место, либо, возможно, на подкаталог?
srisree avatar
флаг us
Привет мистер Уайт все поддомены перенаправляются извне на основной домен поддомен указывает на каталог в public_htmnl например, субдомен поддерживается https://support.maindomain.com — это адрес я тоже установил джумлу но после установки одного скрипта в maindomain.com он был изменен попытался открыть https://support.maindomain.com из браузера, он будет https://maindomain.com все файлы в каталоге поддомена есть создал еще один поддомен для тестирования. https://testing.maindomain.com также переходит на https://maindomain.com субдомен поддержки указывает на public_html/support
флаг kz
Вы пробовали предложение, которое я разместил в своем ответе? Однако, если у вас установлена ​​Joomla в подкаталоге (на который указывает поддомен), то у него должен быть собственный файл `.htaccess` с директивами mod_rewrite (требуется для переднего контроллера Joomla), и это переопределит директивы в родительском ` .htaccess` (который принадлежит основному домену) – поэтому директивы, опубликованные выше, не должны влиять на субдомен `support`, который указывает на сайт Joomla.
флаг kz
Однако, если подкаталог `testing` (на который указывает поддомен `testing`) также не имеет собственного файла `.htaccess`, то приведенные выше директивы повлияют на поддомен `testing` (как упоминалось в моем ответе).
флаг kz
Однако в своем комментарии выше вы заявляете, что запрос направляется на `https://maindomain.com`, но директивы, опубликованные выше, перенаправляют запросы на `https://www.maindomain.com` (т.е. `www` поддомен) - уточните пожалуйста. В противном случае, простая установка «PHP-скрипта» в основном домене не может повлиять на поддомены (за исключением директив .htaccess в родительском каталоге), если только процесс установки каким-либо образом не изменил подкаталоги «support» и «testing»?
флаг kz
(Совет: используйте обратные кавычки, чтобы окружить встроенный код и URL-адреса в комментариях. «Вот так»)
Рейтинг:0
флаг kz
RewriteCond %{HTTPS} выключен [ИЛИ]  
RewriteCond %{HTTP_HOST} !^www\. [НЗ]  
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [R=301,L]

Вы не указали точно, что происходит или куда указывают поддомены, поэтому здесь могут быть другие проблемы.

Однако, если ваши поддомены указывают на ту же область файловой системы (или, возможно, подкаталог), что и основной домен, то приведенное выше правило перенаправит все поддомены на www.example.com - значит субдомен "потерян".

В зависимости от ваших требований, вы можете решить эту проблему, только проверив пример.com вместо !^www\. и разделение перенаправления с HTTP на HTTPS на отдельное правило. Например:

# HTTP на HTTPS (включая поддомены)
RewriteCond %{HTTPS} выкл.
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Канонический редирект без www на www только для основного домена
RewriteCond %{HTTP_HOST} ^(пример\.com)\.?$ [NC]  
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]

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

Однако директивы также расположены в неправильном порядке (это не имеет отношения к проблеме с поддоменом). Канонические перенаправления (выше) должны быть удалены перед внутренняя перезапись. Так что ваши .htaccess вместо этого файл должен быть упорядочен следующим образом:

Индексигнорировать *

RewriteEngine включен  
Переписать Базу /

# HTTP на HTTPS (включая поддомены)
RewriteCond %{HTTPS} выкл.
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Канонический редирект без www на www только для основного домена
RewriteCond %{HTTP_HOST} ^(пример\.com)\.?$ [NC]  
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]

# Удалить расширение ".php" для запрошенного URL
RewriteCond %{THE_REQUEST} \s/(.+)\.php[\s?] [NC]  
RewriteRule ^ /%1 [R=301,L,NE]  

# Внутренне переписать запрос, чтобы добавить расширение ".php"
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteCond %{DOCUMENT_ROOT}/$1.php -f  
Правило перезаписи ^(.+?)/?$ $1.php [L]

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

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