Задать вопрос
@Pesetsu

Как можно оптимизировать это правило Nginx?

Привет, друг.
Столкнулся с такой задачкой. Нужно настроить 301 редирект на все страницы в индексе, после смены структуры ЧПУ.
Страницы имеют вид:
https://example.org/cho-takoe-habr-blog/ где blog это категория а chto-takoe-habr название статьи. После редиректа, формат должен быть https://example.org/blog/chto-takoe-habr.html.
С одной стороны всё просто, но я не знаю как понять что это именно ссылка на бывшую статью а не на страницу.

Сделал так, по моей логике, должно работать, но не работает (точнее, редиректит все страницы, не смотря на условия):
set $allow301 "";
		if ($request_uri ~ ^.*\.html) {
			set $allow301 "3";
		}
		if ($request_uri ~ ^\/(.*?)(-|)(?!.*\-)(.*?)(\/|$)) {
			set $catslug "$1$3";
			set $allow301 "no";
	    }
		if ($catslug != ""){
		    set $allow301 "$allow3011";
		}
		if ($catslug ~ ^[^\/]+$){
		    set $allow301 "2$allow301";
		}
		if ($allow301 = "21"){
			rewrite ^\/(.*?)(-|)(?!.*\-)(.*?)(\/|$) /$3/$1.html permanent;
		}


Что здесь не так, и можно ли как-то оптимизировать правило? В регулярках нуб, понимаю самые элементарные.
  • Вопрос задан
  • 95 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Softer
@Softer
Первое - if is avil
Второе - (как-то так, действовать по аналогии)

rewrite ^/(.+)-([a-z])$ /$2/$1.html permanent;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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