Как в nginx написать правила обработки пути в случае когда в пути есть файл?
Есть nginx сервер, который должен обрабатывать домен двумя разными способами для разный путей. Например
если путь /url, то отдавать файл из 1 директории, если путь /url/to отдавать файл из другого пути. Проблема в том, что в обоих случаях файлы php. В итоге получается, что некоторые пути приобретают такой вид: /url/to/api.php/api/path и nginx считает api.php директорией и выдает соответствующую ошибку, когда видит, что такой директории нет.
Сергей Соколов, к сожалению я работаю с тем, что есть, так что выбора особо и нет. Я вообще пытаюсь сделать перенос с apach на nginx, на первом кстати это работает, но в его конфиги даже смотреть страшно. в любом случае, ничего поделать с такими ссылками не могу.
dodo512, я посмотрел, ничего особенного не увидел.
Смысл такой: в нужной директории лежит api.php фреймворка yii2. и получается, что apach делит url на 2 части
обращаясь к файлу api.php, а все что идет после этого файла, обрабатывается уже роутером фреймворка. Но как это провернуть на nginx или что это вообще такое я не представляю.
Файл в урле может быть только один - в конце собственно пути и перед аргументами, идущими после вопросительного знака. В вашем случае api.php - это часть пути.
Если обрабатывать такие урлы нужно как-то по-особенному, можно поиспользовать регулярку с последующим rewrite`ом, например.