强制Apache在.htaccess文件中发送200而不是404

时间:2014-07-28 09:08:41

标签: apache .htaccess mod-rewrite redirect

我需要强制Apache在.htaccess中发送200 OK而不是404.我不知道这是否可能。我在一篇文章中找到了以下文字,但它不起作用我不知道为什么......

来自:http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html

在名为404的主Web目录中创建一个空白文件。可以为空。 将其添加到.htaccess文件中:

Redirect 200 /404
ErrorDocument 404 /404

这会将Apache ErrorDocument更改为/ 404文件。但是Redirect行导致请求/ 404发出200 OK响应而不是404.

如果这不起作用,则无疑会重写。因此,如果是这样的话,请在前两行中添加此内容,但要高于.htaccess文件中的任何其他重写行:

Options FollowSymLinks ExecCGI

RewriteEngine On
RewriteBase /

# If the requested file doesnt exist
# and if the requested file is not an existing directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[^4]* /404 [L,S=4000]

更详细地解释:http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#Automate_ErrorDocument_Triggering

1 个答案:

答案 0 :(得分:0)

为了发送200状态而不是通常的404,您可以使用此重写规则:

ErrorDocument 404 default
RewriteEngine On
RewriteBase /

RewriteRule ^404\.html/?$ - [L]

# If the requested file doesnt exist
# and if the requested file is not an existing directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . 404.html [L]