410状态代码需要mod_rewrite帮助

时间:2011-08-20 03:13:18

标签: .htaccess mod-rewrite seo http-status-code-410

如果网址上有?,我想发送410状态代码。因为该网站仅适用于启用了SEO的URL(如www.domain.com/seo-enabled-urls)。

通过StatckOverflow社区支持,301 301重定向功能完美无缺:

RewriteBase /
RewriteRule ^romance-package-two\.html$ http://www.domain.com/wedding-champagne [QSA,NC,R=301,L]

以同样的方式,我想添加410消息代码,告诉谷歌(如搜索引擎)永久删除,这样我们就不会有SEO未知或找不到网址的问题。

如果网址如下所示

www.domain.com/seo-enabled-urls?param1=val1&param2=val2

我希望保留相同的网址,但只需使用410这样的代码

RewriteCond %{query_string} ^(.*&)?$ [NC]
RewriteRule ^1$  same url code [QSA,NC,R=410,L]

请帮帮我。

2 个答案:

答案 0 :(得分:3)

您无法使用HTTP 410代码重定向 - 410意味着请求的页面永久消失,并且无法替换:

  

410 Gone

     

服务器上不再提供所请求的资源,并且不知道转发地址。预计这种情况将被视为永久性的。具有链接编辑功能的客户端应该在用户批准后删除对Request-URI的引用。如果服务器不知道或无法确定条件是否是永久性的,则应该使用状态代码404(未找到)。除非另有说明,否则此响应是可缓存的。

- http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.11


HTTP 301的相应定义表明它已经完全符合您的要求:

  

301永久移动

     

已为所请求的资源分配了一个新的永久URI,并且此资源的任何将来的引用应该使用返回的URI之一。具有链接编辑功能的客户端应尽可能自动将对Request-URI的引用重新链接到服务器返回的一个或多个新引用。除非另有说明,否则此响应是可缓存的。

- http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2

答案 1 :(得分:3)

接受的答案不再正确,至少早在Apache 2.0,其中mod_rewrite支持410 GONE目标:

'走了| G'(强制网址消失) 这会强制当前URL消失 - 它会立即发回一个410响应(GONE)。使用此标志可以标记不再存在的页面。

(见http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule

这意味着您上面的规则应该只是:

RewriteCond %{query_string} ^(.*&)?$ [NC]
RewriteRule ^1$ - [G]