2017-09-03 159 views
0

您好,我有一个与301重定向.htaccess问题。301在一些URL上工作,而不是在其他人在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

发现周围的工作,它接缝的问题是id =号,所以我只是这样做:

RewriteCond %{QUERY_STRING} ^id=38$ 
RewriteRule ^blog-article\.php$ http://www.xxxxxxx.co.uk/blog-post/xxxx-xxxxxx-xxxx/9/ [R=301,L] 
1

你不能对匹配的查询字符串重写规则的模式。要将blog-article.php?id = 123重定向到不同位置,您需要使用RewriteCond指令与%{QUERY_STRING}进行匹配。

RewriteCond %{QUERY_STRING} ^id=123$ 
RewriteRule ^blog-article.php$ /location/? [L,R] 

注:traling 在目标路径的末尾非常重要,因为它会丢弃旧的查询字符串。

相关问题