Вопрос

У меня есть сайт, который предоставляет определенный контент на основе поддомена.Таким образом, это один и тот же набор файлов, и, возможно, заголовок и некоторая информация на страницах сайта меняются в зависимости от поддомена.

Мне также нужна другая аутентификация htpassword на основе субдомена, но я не могу найти информацию о том, как выполнить тип if/then в htaccess .

По сути, мне нужно следующее:

Если subdomain = 'abc' Используйте этот файл htpassword

Если subdomain = 'def' Используйте этот файл htpassword

Можно ли это сделать?

Это было полезно?

Решение

Попробуйте что-то вроде этого:

SetEnvIf Host ^abc\. HOST_ABC
SetEnvIf Host ^dev\. HOST_DEF

<IfDefine HOST_ABC>
    AuthUserFile …
</IfDefine>
<IfDefine HOST_DEF>
    AuthUserFile …
</IfDefine>

Другие советы

какой веб-сервер вы используете?

метод, который может работать на нескольких разных серверах (он, безусловно, работает в apache), заключается в том, чтобы в каталоге, соответствующем каждому поддомену, был другой файл .htaccess.

Если бы это был я (а я раньше не думал об этом), я бы:

  1. Используйте внутреннее перенаправление, используя mod_rewrite к разным корням сайта (/suba или /subb) в зависимости от некоторых факторов (эмуляция IF/ELSE)
  2. Использовать символические ссылки в общедоступном каталоге, но не в .htaccess

так:

/sites/subdomain_a/.htaccess
/sites/subdomain_a/pub
/sites/subdomain_b/.htaccess
/sites/subdomain_b/pub

где

/sites/subdomain_a/pub == /sites/subdomain_b/pub

с использованием

ln -s

или похожие.Затем используйте mod_rewrite для перенаправления (внутренне) в правильный корень сайта.я думать mod_rewrite запускается до загрузки .htaccess.

Это означает, что вы фактически обслуживаете одни и те же файлы сайта с разными .htaccess в зависимости от поддомена.

Надеюсь, это поможет, немного взломать.

Было бы интересно посмотреть, существует ли что-то лучше.

Вы не можете использовать if / else, потому что htaccess - это не список инструкций. Но если вы используете условный блок, такой как & Lt; IfModule mod_rewrite.c & Gt; или < IfDefine что-то > ;, вы можете использовать разные директивы в зависимости от того, какой поддомен запрашивается. Я не уверен, какой из них вы бы использовали, хотя ...

Вы также можете поместить один файл .htaccess на один уровень выше файлов и использовать < Directory что-то > указать разные правила для каждого субдомена, но сделать каталоги субдоменов символическими ссылками на один и тот же каталог с общими файлами.

так что это будет каталог над корнем (ами) сети:
.htaccess
sitefiles
subdomain1 (символическая ссылка на файлы сайта)
subdomain2 (символическая ссылка на файлы сайта)
...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top