Проверьте субдомен, перенаправьте субдомен и проверьте основной домен - PullRequest
0 голосов
/ 24 апреля 2020

Я сейчас пытаюсь написать хороший .htaccess, который решает мои проблемы. Однако я либо получаю неправильные перенаправления, либо «слишком много перенаправлений», или что-то в этом роде. Следующий: Я включил поддомены с подстановочными знаками и хотел бы зарезервировать admin.domain.com, support.domain.com и, как правило, иметь возможность добавлять больше доменов, которые будут обрабатываться до * .domain.com. Он также должен быть перенаправлен как https, а URL должен остаться. Например, admin.domain.com не должен заканчиваться на domain.com/admin.php. Тогда мне domain.com следует перенаправить на https: // www.domain.com, если у него нет поддоменов. Все переменные et c. должны быть отправлены тоже. WWW. должны быть удалены из поддоменов. Несколько примеров (так называемый домен> домен перенаправления> источник файла):

admin.domain.com > https://admin.domain.com > domain.com/admin.php
support.domain.com > https://support.domain.com > domain.com/support.php
*.domain.com > https://*.domain.com > domain.com/subdomain.php?subdomain=$subdomain
(example: user.domain.com > https:// user.domain.com/subdomain.php?subdomain=user)
domain.com > https:// www.domain.com > domain.com/index.php

В дополнение к вышесказанному я хотел бы знать, как будет выглядеть правило, если я хочу включить только несколько доменов и все остальные следует перенаправить на domain.com. Например, разрешенными поддоменами являются только администратор и поддержка:

admin.domain.com > https:// admin.domain.com > domain.com/admin.php
support.domain.com > https:// support.domain.com > domain.com/support.php
*.domain.com > https:// www.domain.com > domain.com/index.php
(example: user.domain.com > https:// www.domain.com/index.php)
domain.com > https:// www.domain.com > domain.com/index.php

Что я пробовал (источник .htaccess):

RewriteBase /
RewriteEngine On


# rule for forcing www on main domain
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^ https:// www.%{HTTP_HOST}%{REQUEST_URI} [R=301,NC,L,QSA]

# rule for removing www on sub domains
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.domain\.com)$ [NC]
RewriteRule ^ https:// %1%{REQUEST_URI} [R=301,NC,L,QSA]

# admin subdomains
RewriteCond %{HTTP_HOST} ^admin\.domain\.com$ [NC]
# V prevent infinite redirect loops when accessing /admin
RewriteRule ^((?!admin/).*)$ /admin/index.php$1 [L,NC]

# redirect every other subdomain than admin to https:// www.domain.com/
# except www. because that would end up in an infinite redirect loop
RewriteCond %{HTTP_HOST} ^((?!www).*).domain.com$ [NC]
RewriteRule ^ https:// www.domain.com [R=301,NC,L,QSA]

# if no rule did apply, redirect to the main domain
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ https:// www.domain.com/$1 [R=301,NC,L,QSA]

Проблемы: - admin.domain.com перенаправляет на URL https: // www.domain.com/admin/admin.php (URL должен оставаться admin.domain.com) - invalid.domain.com не перенаправляет на https: // www.domain.com - www.domain.com не перенаправляет на https: // www.domain.com - https: // domain.com не перенаправляет на https: // www.domain.com Я старался изо всех сил, чтобы получить решение для запуска этого. Но каждый раз, когда я находил решение для X, возникала проблема Y .. TLDR: URL-адрес всегда должен начинаться с https: // www.domain.com (пробел из-за фильтра StackOverflow) (сайт можно вызывать с помощью domain.com, www.domain.com, http: // domain.com, ...> перенаправить все на https: // www.domain.com) или https: // subdomain.domain.com. Единственными разрешенными поддоменами являются https: // admin.subdomain.com и https: // support.subdomain.com и ссылка на admin / index. php или support / index. php, все остальные вызовы поддоменов должны быть перенаправлены на https: // www.domain.com или, как второй пример, на domain.com/subdomain.php?subdomain=SUBDOMAIN. URL субдомена должен всегда оставаться, а не быть, например, для https: // admin.domain.com> https: // domain.com/admin/index.php. HTTPS всегда должен быть включен и принудительно (путем перенаправления на https: // (поддомен / www).domain.com). Спасибо всем за ответы:)

ПРИМЕЧАНИЕ: ПРОСТРАНСТВА СДЕЛАНЫ ИЗ-ЗА ФИЛЬТРА STACKOVERFLOW.

...