您好我在301重定向上遇到.htaccess问题。
一切看起来都很好,90%的网址都没有,但不适用于任何单独的博客帖子重定向。
这是他们不重定向的代码:
RewriteRule ^blog-article.php?id=38 blog-post/xxxx-xxxxxx-xx-x-xxxxxxx/9/ [L,NC,R=301]
RewriteRule ^blog-article.php?id=34 blog-post/xxxxxxx/4/ [L,NC,R=301]
但所有其他301重写工作,他们看起来像这样:
RewriteRule ^old-url-portfolio/(.*)$ page/new-url-portfolio/$1 [L,NC,R=301]
RewriteRule ^Portfolio/Detail/(.*)$ portfolio/$1 [L,NC,R=301]
RewriteRule ^old-url/7/ page/new-url/ [L,NC,R=301]
RewriteRule ^contact-us-old/ page/contact-us-new/ [L,NC,R=301]
RewriteRule ^blog.php page/blog/ [L,NC,R=301]
我找不到他们为什么不工作,这不是因为那些不工作的是单个文件,因为blog.php文件被发送到新页面。
任何想法都将受到赞赏:)
答案 0 :(得分:1)
您无法在RewriteRule模式中与查询字符串匹配。要将 blog-article.php?id = 123 重定向到不同的位置,您需要使用RewriteCond指令与%{QUERY_STRING}匹配。
RewriteCond %{QUERY_STRING} ^id=123$
RewriteRule ^blog-article.php$ /location/? [L,R]
注意:目标路径末尾的跟踪?非常重要,因为它会丢弃旧的查询字符串。
答案 1 :(得分:0)
找到一个解决方法,它接缝问题是?id = number所以我只是这样做了:
RewriteCond %{QUERY_STRING} ^id=38$
RewriteRule ^blog-article\.php$ http://www.xxxxxxx.co.uk/blog-post/xxxx-xxxxxx-xxxx/9/ [R=301,L]