Одно быстрое примечание здесь по производительности, связанной с ловлей исключений.
, Когда путь выполнения вводит блок 'попытки', ничего волшебного не происходит. Нет никакой инструкции 'по попытке' и никакой стоимости, связанной или с вводом или с выходом из блока попытки. Информация о блоке попытки хранится в метаданных метода, и эти метаданные используются во времени выполнения каждый раз, когда исключение повышено. Механизм выполнения спускается со стека, ища первый вызов, который содержался в блоке попытки. Любые издержки, связанные с обработкой исключений, происходят только, когда исключения выдаются.
Попробуйте что-нибудь вроде этого:
SetEnvIf Host ^abc\. HOST_ABC
SetEnvIf Host ^dev\. HOST_DEF
<IfDefine HOST_ABC>
AuthUserFile …
</IfDefine>
<IfDefine HOST_DEF>
AuthUserFile …
</IfDefine>
Вы не можете использовать if / else, потому что htaccess не является списком инструкций. Но, если вы используете условный блок, например
Вы также можете поместить один файл .htaccess на один уровень выше файлов и использовать
таким образом, это будет каталог выше корневого (-ых) веб-сайта:
.htaccess
файлы сайта
subdomain1 (символическая ссылка на файлы сайта)
subdomain2 (символическая ссылка на файлы сайта)
...
Если бы это был я (а я не думал об этом раньше), я бы:
, поэтому:
/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 в зависимости от субдомена.
Надеюсь, это поможет, немного hack.
Было бы интересно посмотреть, существует ли что-нибудь получше.
какой веб-сервер вы используете?
метод, который может работать на нескольких разных серверах (он, безусловно, работает в apache), заключается в том, чтобы иметь другой файл .htaccess в каталоге, соответствующем каждому поддомену .