Если пользователь входит 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 уже установлен в подкаталоге.