【问题标题】:htaccess link redirect adds parameterhtaccess 链接重定向添加参数
【发布时间】:2013-10-07 05:36:24
【问题描述】:

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

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite redirect


    【解决方案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

    【讨论】:

      【解决方案2】:

      如果您想将 "/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]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-15
        • 1970-01-01
        • 2012-03-23
        • 1970-01-01
        • 1970-01-01
        • 2019-05-15
        相关资源
        最近更新 更多