310 重定向 URL 包含 ? (问号)

310 Redirect a URL Containing a ? (question mark)

我目前正处于重新开发网站的最后阶段,但是在将旧博客 link 重定向到新格式时遇到了一些问题。

我们有入站 link 到旧博客的形式:

索引页 http://www.domain_name.co.uk/blog-page/

需要成为

http://www.domain_name.co.uk/news/

这很简单,已通过使用

完成
RewriteRule ^blog-page$     /news/ [R=301,L]

个人资料页面 http://www.domain_name.co.uk/blog-page/index.php?/archives/1541-title-of-the-blog.html

以上需要link到

http://www.domain_name.co.uk/news/1541-title-of-the-blog

但是'?'在 URL 结构的中间似乎打破了我的重写规则。我已经在线阅读了有关 QUERYSTRING 的信息,但是我认为这不能解决我的问题,因为 URL

中没有传递实际参数

下面的代码可以工作,但也会传递 '/?/archives/' 信息。

RewriteRule ^blog-page/index.php(.*)$   /news/ [R=301,L]

如有任何帮助,我们将不胜感激。由于某些原因,先前站点构建的其他几个部分使用了相同的 URL 结构。

您将需要一个额外的规则来匹配查询字符串。让你的 DOCUMENT_ROOT/.htaccess 像这样:

RewriteEngine On
RewriteBase /

RewriteCond %{QUERY_STRING} ^/archives/(.+?)\.html$ [NC]
RewriteRule ^blog-page/index\.php$ /news/%1? [R=301,NC,L]

RewriteRule ^blog-page$ /news/ [R=301,L,NC]