Привет, друг.
Столкнулся с такой задачкой. Нужно настроить 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;
}
Что здесь не так, и можно ли как-то оптимизировать правило? В регулярках нуб, понимаю самые элементарные.