1

我正在尝试使用 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,所以我寻求帮助。重定向 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 中的参数。

4

2 回答 2

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]
于 2013-10-06T19:07:45.683 回答
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

于 2013-10-06T15:14:19.383 回答