我在
列出了一堆产品https://www.example.com/all/products/foldername/1234567890-ProductDescriptionA-456.html
https://www.example.com/all/products/foldername/7654321-SomeOtherDesc-B123.html
https://www.example.com/all/products/foldername/93939393-anotherthing-F93939393.html
我想将这些重定向到
https://www.example.com/products.php?p=1234567890
https://www.example.com/products.php?p=7654321
https://www.example.com/products.php?p=93939393
分别。是否有htaccess规则对匹配的参数执行字符串操作?例如,如果我必须使用Python转换我的URL,它将如下所示:
def make_new_url(old_url):
product_id = old_url.split('/')[-1].split('-')[0]
new_url = 'https://www.example.com/products.php?p=%s' % product_id
return new_url
在旧网址中,产品ID位于最后一个“/”之后,恰好位于第一个“ - ”之前。另一个可用的基于正则表达式的规则是:
\/(\d*?)\-
有关如何在Apache htaccess文件中完成此操作的任何想法?
答案 0 :(得分:3)
试试这个:
RedirectMatch ^.*\/(\d+)\-.*$ products.php?p=$1
重写规则与捕获组内的数字匹配,然后将其替换为$ 1.
答案 1 :(得分:1)
试试这个:
RedirectMatch ^/all/products/foldername/([0-9]+)-productDiccriptionA-([A-Za-z0-9]+)\.html$ https://example.com/product.php?p=$1