2012-02-07 71 views
0

的从URL shows.php?id=review-1导向创建一个搜索引擎友好的URL,并使用301重定向进一步重定向服务器端控制文件下列RewriteRule转发流量。使用CURL,重定向到控制器文件显示为200,直接链接到控制器文件显示301重写规则返回HTTP 200时,它应该是HTTP 301

这里是我的RewriteRule

RewriteCond %{THE_REQUEST} ^GET\s/shows\.php\? 
RewriteCond %{QUERY_STRING} (^|&)id=review-[0-9]+(&|$) [NC] 
RewriteRule^/controllers/redirectseo.php? [R=301,L,NC,QSA] 

这里是我的CURL调用结果:

curl -I http://www.defunctgames.com/shows.php?id=review-1 
HTTP/1.1 200 OK 

curl -I http://www.defunctgames.com/controllers/redirectseo.php?id=review-1 
HTTP/1.1 301 Moved Permanently 

更新1:

我试着修改我的RewriteRule摆脱[QSA],认为也许这是问题。它仍然不会返回301.下面的重写规则会返回301,所以我知道它在某种程度上有效。 FQL可能会有所作为吗?

RewriteRule ^defunctexplorer.htm$ http://www.defunctgames.com/ [R=301,L] 

更新2:

我尝试了FQL重定向,并且不有所作为无论是。下面是我到目前为止有:

RewriteCond %{THE_REQUEST} ^GET\s/shows\.php 
RewriteCond %{QUERY_STRING} (^|&)id=([a-z]+)-([0-9]+)(&|$) [NC] 
RewriteRule^http://www.defunctgames.com/controllers/redirectseo.php?id=%2-%3 [R=301,L,NC] 
+0

嗨。你找到解决方案吗?我已经应用了301重定向,它似乎可以工作,但使用curl它说“200代码响应”。 – JCarlos 2017-08-07 16:10:18

回答

0

是否%{THE_REQUEST}已查询字符串追加,未编码?值得一试:

RewriteCond %{THE_REQUEST} ^GET\s/shows\.php 
RewriteCond %{QUERY_STRING} (^|&)id=review-[0-9]+(&|$) [NC] 
RewriteRule^/controllers/redirectseo.php? [R=301,L,NC,QSA] 
+0

我试着去除了你所建议的'\?',它似乎没有什么区别。 – 2012-02-07 17:47:27