LINUX.ORG.RU
ФорумAdmin

редиректы в nginx


0

2

Подскажите, как правильно задать условия для ngx_http_rewrite_module.

Условия заданы по порядку, причем при первом соответствии нужно прекратить дальнейший поиск и сделать редирект (url может подходить под несколько условий).

в апачевском .htaccess это делалось ключем [L]. Как это сделать в nginx?

пример:

server {
	listen 80;
	server_name ololo.ru;
	root /home/ololo/www/site;
	index index.php;
	
	if ($uri !~"^/design") {
		rewrite ^([a-z\d_\(\)\.:]+)/price(/|)$ /index.php?page=page1&name=$1;
	}

	if ($uri !~ "^/(design/|data/|cache/|.*\.php|.*\.txt|.*\.xml|.*\.html|.*\.htm?)") {
		rewrite ^/([a-z\d_\(\)\.:]+)(/|)$ /index.php?page=page2&name=$1;
	}

	if ($uri !~ "^/(design/|data/|cache/|.*\.php|.*\.txt|.*\.xml|.*\.html?)") {
		rewrite ^/([a-z\d_\(\)\.:]+)/([a-z\d_\(\)\.:]+)((/|)|/(\d+))$ /index.php?page=page3&section_name=$2&root_name=$1&cp=$5;
	}
}
	
При совпадении первому регекспу, проверка продолжается и в итоге получаю 3-й урл. Как остановить его сразу, как только найдено соответствие?

И еще - после внесения изменений нужно ребутать сервер полностью, или service nginx reload достаточно?



Последнее исправление: RJ45 (всего исправлений: 3)

Условия заданы по порядку, причем при первом соответствии нужно прекратить дальнейший поиск и сделать редирект (url может подходить под несколько условий).

в апачевском .htaccess это делалось ключем [L]. Как это сделать в nginx?

Прочитать инструкцию: http://wiki.nginx.org/HttpRewriteModule#rewrite

И еще - после внесения изменений нужно ребутать сервер полностью

о, да. И еще не забудьте временно отключить его от розетки...

myhand
()
Ответ на: комментарий от myhand

о, да. И еще не забудьте временно отключить его от розетки...

А можно как-то без перезагрузки nginx конфиги менять (не только менять, а чтобы они и изменялись при этом)?

ymuv ★★★★
()
Ответ на: комментарий от vadv

Можно на примере? С ngnix столкнулся впервые

RJ45
() автор топика
Ответ на: комментарий от ymuv

можно как-то без перезагрузки nginx конфиги менять (не только менять, а чтобы они и изменялись при этом)?

nginx -t проверить на ошибки

nginx -s reload перечитать и применить конфиг

Skolotovich ★★★
()
Ответ на: комментарий от vadv

Да. без sudo service nginx reload новый конфиг не применялся. Спасибо.

RJ45
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.