如果网址上有?
,我想发送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¶m2=val2
我希望保留相同的网址,但只需使用410这样的代码
RewriteCond %{query_string} ^(.*&)?$ [NC]
RewriteRule ^1$ same url code [QSA,NC,R=410,L]
请帮帮我。
答案 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]