nginx pagination с переменными rewrite

Я использую 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 " никогда не совпадают.

0
задан 13 April 2017 в 15:37
1 ответ

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;
}
0
ответ дан 5 December 2019 в 09:30

Теги

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