Я использую wordpress, и у меня есть этот код , работающий для получения и разбивки на страницы подкатегорий определенной категории.
Он работает (почти) нормально, потому что создает две проблемы, которые можно решить на nginx.
Работа разбиения на страницы создает проблему с дублированием контента, дважды разбивая первую страницу на страницы с двумя разными URL-адресами;
domain.com/cat-variable-name/
domain.com/cat-variable-name/?cpage=1
Когда кто-то возвращается на «? Cpage = 1 », он должен быть перенаправлен на:
domain.com/cat-variable-name/
Это не оптимизированные для SEO URL-адреса, и у меня есть настраиваемые постоянные ссылки с /% postname% / , но они не переписывают это настраиваемое разбиение на страницы, и я понятия не имею, как это сделать, не нарушив ничего другого на моем сайт. Итак ...
После первой страницы домен. com / cat-variable-name /? cpage = (page_number)
Мне нужно найти способ переписать все примерно так:
domain.com/cat-variable-name/cpage/(page_number)
Как я могу это сделать?
Я уже пробовал безуспешно:
rewrite ^ /? cpage = $ 1 / cpage / ([^ /] *) /;
if ($request_uri ~* ^(.+)\?cpage=1$) {
set $dom_prefix $1; set $args ''; rewrite ^(.*)$ $scheme://$host$dom_prefix permanent; break; }
if ($request_uri ~* ^(.+)\?cpage=(\d+)$) {
set $dom_prefix $1; set $cpage $2; set $args ''; rewrite ^(.*)$ $scheme://$host$dom_prefix/p$cpage permanent; break; }
Примечание. Помните, что " cat-variable-name " и " page_number " никогда не совпадают.
nginx $ request_uri
не содержит аргументов запроса, он содержит только URI. Аргументы запроса доступны в переменных $ arg_name
.
Вы можете попробовать следующее:
if ($arg_cpage = 1) {
return 301 $scheme://$host$uri;
break;
}
if ($arg_cpage ~ ^(\d+)$) {
return 301 $scheme://$host$uri/p$1;
break;
}