【问题标题】:301 ignoring dynamic url301忽略动态网址
【发布时间】:2014-09-24 19:58:22
【问题描述】:

好的,第一次在stackoverflow上发帖,我去。

我正在努力为旧站点的迁移编写 301 重定向。 该网站使用动态网址,但这些似乎不起作用。

旧网站:http://oldsite.com/index.php?actie=contact

新网站:http://newsite.com/contact

Options +FollowSymlinks
RewriteEngine on
Redirect 301 /index.php?actie=contact http://newsite.com/contact

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite redirect


    【解决方案1】:

    Redirec 指令无法匹配查询字符串。

    在根 .htaccess 中使用这样的规则:

    Options +FollowSymlinks
    RewriteEngine on
    
    RewriteCond %{QUERY_STRING} ^actie=contact$ [NC]
    RewriteRule ^index\.php$ http://newsite.com/contact? [L,NC,R=301]
    

    【讨论】:

    • 谢谢,这似乎可行,但我如何组合多个重定向?一旦我添加另一个,似乎只有第一个有效
    • 您正在尝试哪些其他重定向示例?
    【解决方案2】:

    您无法匹配 Redirect 中的查询字符串,您必须使用 mod_rewrite 和 %{QUERY_STRING} 变量。 (还要注意Redirect是一个mod_alias指令,与重写引擎无关)

    选项 +FollowSymlinks

    RewriteCond %{QUERY_STRING} ^actie=contact(^|&)
    RewriteRule ^index\.php http://newsite.com/contact? [L,R=301]
    

    如果您想将匹配actie= 之后的任何内容作为一般规则,那么:

    RewriteCond %{QUERY_STRING} ^actie=([^&]+)
    RewriteRule ^index\.php http://newsite.com/%1? [L,R=301]
    

    【讨论】:

      猜你喜欢
      • 2011-04-17
      • 2010-12-03
      • 1970-01-01
      • 2012-02-19
      • 2013-10-19
      • 2015-06-06
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多