Этот вопрос во многом вытекает из Предыдущая Я спросил - и в итоге сам себе ответил. Краткое изложение проблемы, которую я там описываю, и моего решения.
- Мне нужно выполнять разные действия по умолчанию при попытке доступа к файлам в подпапке в зависимости от того, кто пытается получить доступ
аа
- Веб-приложение «бэк-офиса», в котором файл доставляется, если он существует, или создается «заглушка», которая возвращается обратно, если она не существует.
- В ответ на запросы от телефонного приложения, OTH, я хочу доставить файл, если он существует, или HTTP 404, если он не существует.
Решение, которое я разработал, выглядит следующим образом
- Создайте символическую ссылку на указанную папку
ln -s /путь/к/папке /путь/к/bo_folder
где префикс бо_
по симлинку означает бэк-офис
- При извлечении файлов из приложения просто попробуйте связаться с ними напрямую, как
/путь/к/папке/имя_файла.расширение
в этом случае Nginx будет иметь дело с отправкой 404 или файла, как он сочтет правильным.
- При извлечении файлов для редактирования в пакете бэк-офиса обращайтесь к ним как
/path/to/bo_folder/file.name.extn
Следующий блок конфигурации Nginx
расположение /путь/к/bo_folder
{
add_header Access-Control-Allow-Origin *;
переписать ^(.*)$ /path/to/folder/index.php?$1 последним;
}
Проблема, для которой я сейчас пытаюсь найти более изящное решение, заключается в следующем: у меня есть не одна такая папка, а целая их последовательность. /путь/к/папке_1, /путь/к/папке_2... /путь/к/папке_n
Пока могу поставить место расположения
блоки для каждой такой папки возможно это утомительно и подвержено ошибкам. Почти наверняка есть способ написать переписывание в более общем виде на один уровень папки выше, т.е. /путь/к
а не для каждой отдельной подпапки.
Здесь есть небольшая сложность - я не могу справиться с этим, переписав /путь/к/index.php
папка, так как содержимое заглушки, которое мне нужно отправить обратно, сильно отличается в зависимости от подпапки, в которой должно находиться это содержимое.
Мои довольно поверхностные знания о конфигурации Nginx подводят меня здесь. Как это может быть сделано?