Это предложение было задано по телефону SO before, но ответы не были обобщены. Так вот.Как удалить подкаталог с URL-адреса перед тем, как перейти к скрипту?
У меня есть два разных веб-приложения. Они были сделаны на разных серверах в корне. Но теперь они будут помещены в подкаталоги на одном сервере. Нижеприведенный сценарий отправляет подкаталог вместе с URI в сценарии. Это проблема.
старые URLs:
новые URLs:
Магазин сайт видя /store/items/1
, когда он хочет просто посмотреть /items/1
. То же самое касается сайта backoffice.
Моя попытка:
location /store {
try_files @store_site;
}
location /backoffice {
try_files @backoffice_site;
}
location @store_site {
include uwsgi_params;
uwsgi_pass unix:/var/run/uwsgi/store_site.sock;
proxy_set_header Host $host;
}
location @backoffice_site {
include uwsgi_params;
uwsgi_pass unix:/var/run/uwsgi/backoffice_site.sock;
proxy_set_header Host $host;
}
Опять же, сайт магазина получает URL-адреса с префиксом /store
и BackOffice получает /backoffice
. Эти сайты были закодированы, чтобы не ожидать этих префиксов. Мне нужно удалить префикс /store
и /backoffice
перед отправкой на фактический сайт.
Это правило переписывания правил?
Я пробовал это на основе this SO page, и это не сработало. Я не должен понимать что-то о синтаксисе.
location /store {
rewrite ^/store/(.*) /$1;
try_files $uri @store_site;
}
Update
По-видимому, это работает (добавлено break;
) Является ли это полное решение?
location /store {
rewrite ^/store/(.*) /$1 break;
try_files $uri @store_site;
}
Более или менее полное решение.Зависит от деталей вашего сайта. – Dayo