Назад | Перейти на главную страницу

как показать содержимое поддомена с подстановочными знаками на основе URL-адреса с помощью файла .htaccess?

Если пользователь входит example.domain.com, Я хочу, чтобы он увидел, что в www.domain.com/example.

Другой пример:

Пользователь запросит example.domain.com/photos/gallery.php?from=var1&no=3, он увидит, что в www.domain.com/example/photos/gallery.php?from=var&no=3.

Примечание: в моих подпапках (подстановочных знаках) у меня будет установлен WordPress, поэтому я также должен помнить об этой системе URL.

Я предполагаю, что вы уже настроили поддомен с подстановочными знаками в своем DNS, и конфигурация вашего сервера настроена для приема таких запросов. Так что все эти поддомены разрешаются в корневой каталог вашего основного домена.

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

Затем вы можете сделать что-то вроде следующего в .htaccess файл в корне документа:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule ^ /%1%{REQUEST_URI} [L]

Это исключает перезапись субдомена www.

Предоставление подкаталога имеет собственный .htaccess файл с директивами mod_rewrite (как и следовало ожидать от WordPress), тогда вам больше ничего не нужно делать.


ОБНОВИТЬ: Однако если вы не установлен WordPress в подкаталоге, т.е. у тебя нет .htaccess содержащий директивы mod_rewrite в подкаталоге, тогда вам нужно будет изменить приведенный выше код, добавив дополнительное условие, чтобы предотвратить цикл перезаписи (500 Internal Server Error).

Например:

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.com
RewriteRule ^ /%1%{REQUEST_URI} [L]

Условие, которое проверяется на соответствие REDIRECT_STATUS переменная среды предотвращает цикл перезаписи, блокируя перезаписанные запросы. Однако, как отмечалось выше, в этом нет необходимости, если WordPress уже установлен в подкаталоге.