medianoche
@medianoche

Почему не работает замена в nginx rewrite?

location / {
	if ($args ~ "_escaped_fragment_=(.*)") {
		rewrite ^ /snapshot/$1/index.html;
		break;
	}

	try_files $uri $uri/ /index.html =404; # html5Mode
}


Выдает ошибку:
open() "/home/www/site.ru/public/snapshot//index.html" failed (2: No such file or directory),
request: "GET /?_escaped_fragment_=tools HTTP/1.1", host: "site.ru"


Судя по тому, что оно пытается открыть public//snapshot//index.html вставка $1 не работает. Видимо это из-за того, что замена происходит в секции location. Как исправить эту ошибку?
  • Вопрос задан
  • 283 просмотра
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Вы ожидаете что $1 будет взят из регулярки в if, но на самом деле он берётся из регуляки в rewrite, т.е. пуст.

Используйте $arg_* переменные. Например

rewrite ^ /snapshot/$arg__escaped_fragment_/index.html;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы