我正在尝试使用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中的参数。
答案 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]