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