htaccess链接重定向添加参数

时间:2013-10-06 13:46:21

标签: regex apache .htaccess mod-rewrite redirect

我正在尝试使用htaccess将旧菜单项重定向到新菜单项。它工作但它添加了我不想要的参数。代码是:

Redirect 301 /menu_cars_old.html http://www.domain.com/menu_cars_new.html
RewriteRule ^/?(menu_+[A-Za-z._-]+)$ index.php?menu=$1 [NC,L]

我对htaccess不熟悉所以我正在寻求帮助。 Redirect 301语句应该可以解决这个问题,但我认为它与我的重写规则有关。

重定向的链接看起来像http://www.domain.com/menu_cars_new.html?menu=menu_cars_old.html

如果我将其更改为

Redirect 301 /menu_cars_old.html http://www.domain.com/?menu=menu_cars_new.html

它可以工作,但我不想要URL中的参数。

2 个答案:

答案 0 :(得分:1)

不要混用mod_alias和mod_rewrite规则。这是你应该如何拥有它:

RewriteEngine On

RewriteRule ^/?menu_cars_old\.html$ http://www.domain.com/menu_cars_new.html [R=301,NC,L]
RewriteRule ^/?(menu_+[\w.-]+)$ index.php?menu=$1 [NC,L,QSA]

请务必将此代码放在DOCUMENT_ROOT/.htaccess

答案 1 :(得分:1)

如果您要将“/ menu _ $any重写为“/ index.php?menu = menu _ $any并重定向“/ menu_cars_old.html”进入“/ menu_cars_new.html”,然后尝试以下指令:

# once per htaccess
RewriteEngine on

RewriteRule ^/?(menu_([A-Za-z_-]+))$ /index.php?menu=$1
RewriteRule ^/?menu_cars_old.html$ /menu_cars_new.html [R=301,L]