301从旧网址重定向到没有查询字符串的新网址?

时间:2014-01-18 14:20:33

标签: regex apache .htaccess mod-rewrite redirect

我正在尝试从旧的网址结构重定向到新网址,在我的情况下会添加一些参数。

旧结构看起来像www.url.com/detail/111.html,它是从www.url.com?action=detail&id=111重写的 现在结构因SEO原因而改变了,上面提到的网站的新网址就像www.url.com/detail/111/cat/sub.html。

现在我想重定向 www.url.com/detail/111.html来 www.url.com/detail/111/cat/xyz.html

或来自 www.url.com/detail/112.hmtl to www.url.com/detail/112/cat/abc.html

新网址的最后一部分是可变的!

如果我这样做: 重定向301 /detail/112.html http://www.url.com/detail/112.cat/abc.html 查询字符串ist添加到新网址。浏览器显示:http://www.url.com/detail/112.cat/abc.html?action=detail&id=112

当我添加?到新的URL?也显示在浏览器中。

QSD不起作用,因为Apache 2.2正在运行。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以将此代码放在DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On

RewriteRule ^detail/112\.html$ http://www.url.com/detail/112.cat/abc.htm? [L,NC,R]

记下目标网址末尾的?,用于删除任何现有的查询字符串。