是否可以为 404 错误页面发送 2 个 http 状态代码并重定向到主页
is it possible to send 2 http status codes for 404 error page and redirect to homepage
在.htaccess文件中,是否可以为404错误页面发送410状态码,然后立即重定向到首页?
例如,当搜索引擎抓取一个404页面时,服务器发送410状态码,然后重定向到首页。
不,不可能在同一个响应中发送 4xx 和 重定向(即 3xx 状态)- 如果这是意图的话。
410(或 404)响应是一个响应。 3xx HTTP 重定向是另一种完全不同的响应。你做一个或另一个,而不是两者。
Google 无论如何都可能会看到 3xx 重定向到主页作为软 404(因为它们通常是糟糕的用户体验)。
但是,您可以发送 410 "Gone" 状态而不是 404 "Not Found"。具体如何执行此操作将取决于您的系统。例如,如果您有一个现有的 404 文档,那么在将响应发送到客户端时简单地覆盖 HTTP 状态可能会更容易。要在任何响应未映射到物理文件或目录时发送 410,您可以使用 .htaccess
中的 mod_rewrite:
执行类似以下操作
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ - [G]
在.htaccess文件中,是否可以为404错误页面发送410状态码,然后立即重定向到首页?
例如,当搜索引擎抓取一个404页面时,服务器发送410状态码,然后重定向到首页。
不,不可能在同一个响应中发送 4xx 和 重定向(即 3xx 状态)- 如果这是意图的话。
410(或 404)响应是一个响应。 3xx HTTP 重定向是另一种完全不同的响应。你做一个或另一个,而不是两者。
Google 无论如何都可能会看到 3xx 重定向到主页作为软 404(因为它们通常是糟糕的用户体验)。
但是,您可以发送 410 "Gone" 状态而不是 404 "Not Found"。具体如何执行此操作将取决于您的系统。例如,如果您有一个现有的 404 文档,那么在将响应发送到客户端时简单地覆盖 HTTP 状态可能会更容易。要在任何响应未映射到物理文件或目录时发送 410,您可以使用 .htaccess
中的 mod_rewrite:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ - [G]