htaccess使用字符串参数

时间:2015-06-22 05:04:08

标签: regex apache .htaccess

我在

列出了一堆产品
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文件中完成此操作的任何想法?

2 个答案:

答案 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