Мне нужно переписать с nginx из /blah/.../3275 в / id / 3275, если второй файл существует, в противном случае я хочу передать его в apache. Вот моя (слабая) попытка
(...) обозначает несущественные вещи
if ($request_filename ~^/.../([0-9]+)/$) { if (-d /id/$1) { rewrite ^/.../[0-9]+/([0-9]+)/$ /id/$1; } }
У кого-нибудь есть идеи
Лучше всего сделать это с внутренней перепиской:
set $original_uri $uri; location /blah/irrelevant_stuff { error_page 404 = @apache; rewrite ^/blah/irrelevant_stuff/([0-9]+)$ /id/$1; } location @apache { proxy_pass http://upstream$original_uri; }
Приведенный выше ответ от Вулонга я по какой-то причине не смог заставить работать, но я все же получил его, используя
if (!-e $request_filename) { proxy_pass http://apache$original_uri; break; }
, а не директива error_page. Та же идея в основном