如何重写htaccess中以重复字符

时间:2016-03-28 13:24:02

标签: apache .htaccess url-rewriting

我已经更改了网络平台,并且拥有旧网址,我不能也不想在现有旧内容的新平台上进行匹配。

我有一系列旧产品网址,网址中都有'-p-',后跟一串数字,以.html结尾(osCommerce平台网址)。

我想知道如何改写:

/x/[rest-of-url]-p-[random numbers].html

/x/[rest-of-url]

我希望最终结果看起来像这样:

http://www.shop.com/shop/versace-black-snakeskin-pony-hair-hobo-p-2214.html

重定向到:

http://www.shop.com/shop/versace-black-snakeskin-pony-hair-hobo

有人知道htaccess文件中这是否可以作为重写规则吗?

1 个答案:

答案 0 :(得分:0)

我的托管服务提供商BeepWeb回答了我的问题。

RewriteRule ^/shop/(.*)-p-(.*).html$ http://www.shop.com/product/$1/ [R=302]

第一个参数是您要匹配的URI。 (。)匹配任何字符。第二个参数是目标URL。 $ 1对应第一个(。)。 $ 2将是第二个(。*),依此类推...... [R = 302]告诉重写为302重定向(对于301重定向使用[R = 301])。

使用(。)基本上就像使用一个通配符。您可以通过指定要匹配的字符而不是所有字符(而不是使用(。)您可以使用([abc] *)而不是仅匹配a,b和c字符来缩小此范围)。

另外,请注意不要无意中匹配其他URL(即,您需要确保模式匹配对于正在重写的URL是唯一的。)

如果您需要源参考,请参阅以下内容: https://httpd.apache.org/docs/current/rewrite/intro.html

再次感谢http://www.beepweb.com的详细回复。 希望它能帮助别人。