ErrorDocument 404 /404.php在PHP中的.htaccess文件中不起作用

时间:2014-04-10 01:01:23

标签: php apache .htaccess mod-rewrite

我在根目录中有一个.htaccess文件,还有404.php文件。我的.htaccess文件的内容是:

ErrorDocument 404 /404.php 

但是当我错误拼写我的网址时,404.php没有打开。相反,我收到以下消息:

  

未找到

     

在此服务器上找不到请求的网址/mywebsite/ites.php。

     

此外,尝试时遇到404 Not Found错误   使用ErrorDocument来处理请求。

但是当我尝试ErrorDocument 404 google.com时,它确实有效。

4 个答案:

答案 0 :(得分:17)

我会将我的评论合并到这个答案:

设置时......

ErrorDocument 404 /404.php

/404.php路径可能不是htdocs文件夹根目录的绝对路径,而是文件系统的根目录。根据您的配置,这可能是/home/htdocs/~等等。

所以我们需要做的是找出绝对路径并相应地设置它。

答案 1 :(得分:15)

404.php.htaccess文件相关的实际位置在哪里?您可以直接将其作为直接URL运行吗?文件是否可由服务器读取?或者它是否在嵌套的子目录中?您也可以尝试使用完整的网址:

ErrorDocument 404 http://mygreat.server/404.php 

official Apache documentation here中的完整详情。

答案 2 :(得分:1)

您像这样使用ErrorDocument

ErrorDocument <3-digit-code> <action>

您可以通过键入的内容触发三种类型的操作:

该动作将被视为:

  1. 如果操作以“ /”开头,则重定向到的本地URL。
  2. 如果操作是有效的URL,则重定向到的外部URL。
  3. 要显示的文本(如果以上都不显示)。 (如果文本由多个单词组成,则必须用引号(“)引起来。)

例如。

自定义文字ErrorDocument 404 "Oops! We can't find that pesky file. Sorry."

本地路径ErrorDocument 404 /local/path/to/404.php

外部URL ErrorDocument 404 http://external_url.example.com/server_error.html

您已经选择了本地文件,但是从服务器的角度看,可能未正确链接。本地服务器路径不是您在URL中看到的路径,通常包含~/htdocs/www/domainname/之类的内容。

问题很可能是您指向404.php的路径错误,服务器无法找到。

答案 3 :(得分:0)

嘿,您可以从以下位置更改httpd.conf中的某些设置:-

<Directory />
AllowOverride none
Require all denied
</Directory>

至:-

<Directory />
AllowOverride All
Require all denied
</Directory>

您可以使用

ErrorDocument 404 /404.php

在htaccess中