.htaccess重定向带括号的网址

时间:2013-08-08 14:03:35

标签: regex .htaccess mod-rewrite

我有这个网址:

http://www.suplementospt.com/Goldnutrition-Pack-3x-Mega-Cla-(Portes-Gratis)

我需要将其重定向到

http://www.suplementospt.com/Goldnutrition-Pack-3x-Mega-Cla

它不起作用,我认为问题是括号。

我的代码:

RewriteRule ^Goldnutrition-Pack-3x-Mega-Cla-(Portes-Gratis)?$ http://www.suplementospt.com/Goldnutrition-Pack-3x-Mega-Cla [R=301,L]

2 个答案:

答案 0 :(得分:2)

由于.htaccess使用RegEx匹配URL而括号是RegEx特殊字符,因此您需要将它们转义:

RewriteRule ^Goldnutrition-Pack-3x-Mega-Cla-\(Portes-Gratis\)$ http://www.suplementospt.com/Goldnutrition-Pack-3x-Mega-Cla [R=301,L]

此外,不要忘记通过将以下代码放在.htaccess文件的顶部来启用重写引擎。

RewriteEngine on

答案 1 :(得分:0)

你问的问题不是.htaccess具体而是关于所谓的正则表达式,或者更具体的正则表达式的风格 < / em>在mod_rewrite Apache Extensions中使用。

你发现these Regular Expressions在那里解释正确,括号是特殊字符。

它们具有特殊含义(分组),因此不能“按原样”(逐字)使用,但需要转义。这是通过为具有特殊含义的字符(如())添加\前缀来完成的,该字符将“字符”赋予其含义:

RewriteRule ^Goldnutrition-Pack-3x-Mega-Cla-\(Portes-Gratis\)?$ ...

我希望这些解释和链接可以帮助您在所需的重写规则中编写所有这些正则表达式。