У меня есть веб-сайт тематических объявлений с помощью собственного сценария, и теперь я перемещаю его в Wordpress. Я хочу перенаправить старые URL к URL Wordpress.
Сценарий имеет два основных типа URL:
URL категории:
/category/id-of-category [/page-number] /category-name.html
например:
/category/15/cars.html
/category/15/3/cars.html (эти 3 для разбиения на страницы),
это должно перенаправить к/? cat=15
Список URL:
/category/id-of-category/category-name/listings/id-of-ad/ad-title.html
например:
/category/15/cars/listings/12345/selling-my-old-toyota.html
это должно перенаправить к/? p=12345
Я хочу знать точную nginx конфигурацию, которая сделала бы постоянное перенаправление к новому URL на том же доменном имени.
Что вы делаете с номером страницы?
В любом случае, предполагая, что id-of - *
и номер страницы могут быть представлены хотя бы одним символом диапазона [0-9]
и название-категории
и заголовок объявления
могут быть представлены как минимум одним символом диапазона [_- a-zA- Z0-9]
:
location ~ ^/category/(\d+)/?\d*/[-\w]+\.html$ {
return 301 $scheme://$server_name/?cat=$1;
}
location ~ ^/category/\d+/[-\w]+/listings/(\d+)/[-\w]+\.html$ {
return 301 $scheme://$server_name/?p=$1;
}
Обратите внимание, что регулярные выражения nginx немного специфичны, но очень эффективны (например, добавить знак минус в буквенно-цифровой диапазон без необходимости перезаписывать весь диапазон [-_ a-zA-Z0- 9]
подробно, как, например, с grep).
Обновление : исправлена группа catpure второго местоположения.