0

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

在 StatckOverflow 社区的支持下,这个 301 重定向非常有效:

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

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

如果 URL 看起来像这样

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

我想保留相同的 URL,但只使用这样的 410 代码

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

请帮我。

4

2 回答 2

4

您不能使用 HTTP 410 代码进行重定向 - 410 表示所请求的页面已永久消失,并且没有替代品:

410 走了

请求的资源在服务器上不再可用,并且不知道转发地址。预计这种情况将被视为永久性的。具有链接编辑能力的客户端应该在用户批准后删除对 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

于 2011-08-20T03:25:43.997 回答
4

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

'gone|G'(强制 URL 消失)这会强制当前 URL 消失 - 它立即发回 HTTP 响应 410 (GONE)。使用此标志将不再存在的页面标记为已消失。

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

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

RewriteCond %{query_string} ^(.*&)?$ [NC]
RewriteRule ^1$ - [G]
于 2013-10-17T19:26:59.250 回答