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

时间:2015-01-16 14:01:47

标签: .htaccess mod-rewrite

我目前正处于重建网站的最后阶段,但在将旧博客链接重定向到新格式方面遇到了一些麻烦。

我们有以下形式的旧博客的入站链接:

索引页 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

以上需要链接到

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

然而'?'在URL结构的中间似乎打破了我的rewriterule。我在网上看过有关QUERYSTRING的内容,但我不相信这解决了我的问题,因为URL中没有传递实际参数

以下代码有效,但也会传递'/?/ archives /'信息。

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

任何帮助都会受到大力赞赏。上一个站点构建还有其他几个部分由于某种原因使用相同的URL结构。

1 个答案:

答案 0 :(得分:1)

您需要一个匹配查询字符串的附加规则。让你的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]