【发布时间】:2012-02-08 01:45:35
【问题描述】:
以下 RewriteRule 将流量从 url shows.php?id=review-1 转发到服务器端控制器文件,该文件创建 SEO 友好 URL 并使用 301 重定向进一步重定向。使用CURL,重定向到控制器文件显示为200,直接链接到控制器文件显示为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]
【问题讨论】:
-
嗨。你找到解决办法了吗?我已经应用了 301 重定向,它似乎可以工作,但使用 curl 会显示“200 代码响应”。
标签: .htaccess mod-rewrite redirect curl url-rewriting