我有一个使用专有脚本的分类广告网站,现在我要将其迁移到 Wordpress。我想将旧 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列表网址:
/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。
答案1
您对页码做了什么?
无论如何,假设id-of-*
和页码可以由至少一个范围内的字符表示[0-9]
,并且category-name
和ad-title
可以由至少一个范围内的字符表示[_-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 组。