Могу ли я сделать if/then/else в htaccess?
У меня есть сайт, который обслуживает определенный контент на основе поддомена. Таким образом, это тот же набор файлов, и, возможно, заголовок и некоторая информация на страницах сайта изменяется на основе поддомена.
Мне нужно иметь другую аутентификацию htpassword на основе поддомена, но не могу найти информацию о том, как сделать тип if/then в htaccess .
в основном то, что мне нужно, это:
Если поддомен = 'abc' используйте это htpassword файл
Если поддомен = 'def' используйте этот файл htpassword
можно ли это сделать?
4 ответов
попробуйте что-то вроде этого:
SetEnvIf Host ^abc\. HOST_ABC
SetEnvIf Host ^dev\. HOST_DEF
<IfDefine HOST_ABC>
AuthUserFile …
</IfDefine>
<IfDefine HOST_DEF>
AuthUserFile …
</IfDefine>
какой веб-сервер вы используете?
метод, который может работать на нескольких разных серверах (он, безусловно, работает в apache), должен иметь другой .htaccess файл в каталоге, соответствующем каждому поддомену.
Если бы это был я (и я не думал делать это раньше), я бы:
- используйте внутреннее перенаправление с помощью и mod_rewrite к различным корням сайта (/suba или/subb) в зависимости от некоторых факторов (эмуляция IF / ELSE)
- использовать ссылки в общем каталоге, но не .реврайт
так:
/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 для перенаправление (внутренне) в правый корень сайта. Я!--22-->думаю mod_rewrite запускается раньше .htaccess был загружен.
Это означает, что вы эффективно обслуживает одни и те же файлы сайта с другой .htaccess в зависимости от поддомена.
надеюсь, это поможет, немного взломать.
было бы интересно посмотреть, существует ли что-то лучше.
вы не можете использовать if/else, потому что htaccess не является списком инструкций. Но, если вы используете условный блок, например
вы также можете поставить один .htaccess файл на один уровень выше файлов и использовать , чтобы указать различные правила для каждого поддомена, но сделать все каталоги поддоменов быть символические ссылки на тот же каталог с общими файлами.
таким образом, это будет каталог выше веб-корня(ов):
.реврайт
sitefiles
subdomain1 (символическая ссылка на sitefiles)
subdomain2 (символическая ссылка на sitefiles)
...