找不到notfound.html

时间:2012-02-14 17:25:36

标签: apache xampp http-status-code-404

非常确定基于各种示例(例如here)我正确设置了:

1)我在网站的根目录中创建了一个文件'notfound.html'

2)我正在运行xampp,即。 Apache Web服务器,基于我读过的东西,当浏览器中输入不存在的页面时,Apache会在站点的根目录中查找notfound.html,例如www.mysite.com/NotAValidPage。 html并使用notfound.html作为404错误消息

这是我尝试过的以及每次尝试的结果:

1test)我将自己的notfound.html放在我网站的根目录中并输入一个不存在的页面

1result)我的notfound.html没有被使用,而是(我猜)我的网络服务器的默认404错误出现并说:

 Object not found!

      The requested URL was not found on this server. If you entered the URL manually please check your spelling and try 
       again.

If you think this is a server error, please contact the webmaster.

Error 404
localhost
2/14/2012 9:11:29 AM
Apache/2.2.17 (Win32) mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1 

2test)我接下来将.htaccess文件添加到我网站的根文件夹中,并将此行添加到此.htaccess文件中:

    ErrorDocument 404 /notfound.html

然后我在浏览器中输入了一个不存在的页面。

2result)我仍然看到默认的404错误页面,而不是我的notfound.html,只有这次默认错误页面显示:

 Not Found

 The requested URL /mysite.com/indsadfaex.php was not found on this server.

 Additionally, a 404 Not Found error was encountered while trying 
 to use an ErrorDocument to handle the request.

3test)然后,我通过删除自定义404错误页面文件名的名称之前的'/'来修改我的.htaccess文件,如下所示:               ErrorDocument 404 notfound.html

3result)现在当我输入我的网站名称后跟一个不存在的页面时,我不再看到默认的404错误页面 - 浏览器窗口完全空白,除了以下内容左上角:

    notfound.html

不知道该怎么做,好像我错过了一些微妙之处 - 任何想法都非常感激。

编辑:我怀疑这很重要,但我的.htaccess文件中有2个其他语句用于重定向情况:

  RewriteEngine on
  RewriteRule ^([^/\.]+)$ theHandlerPage.php?theArgumentPassedIn=$1 [L]

这里的正则表达式只是说'进入输入的URL的最末端并匹配一个连续的字符串iff没有'/'或'。'在那个连续的字符流中,然后通过$ _GET [theArgumentPassedIn']将它们传递给文件theHandlerPage.php。

我不认为这个重写规则会在这里发挥作用,因为它不会匹配错误的页面名称,例如mysite / badpage.html,因为'。'在badpage.html。


好的 - 我发现了一些意外情况。

1)我将 notfound.html 错误文件移至我网站的父目录 - 而在文件位于c:/xampp/htdocs/mysite/notfound.html之前,我现在已将此文件移至{ {1}}。

2)然后我在我的c:/xampp/htdocs/notfound.html文件中使用 ErrorDocument 404 /notfound.html ,该文件位于.htaccess

现在当我输入浏览器栏c:/xampp/htdocs/mysite/.htaccess时,我的 404 notfound.html 显示正常。

但这是不可行的。我不能将mysite/aBadfilename.html驻留在我网站的父目录中,因为我需要为我开发的每个网站使用不同的notfound.html。我必须能够将我的网站的notfound.html放在其文件夹空间中,即。在notfound.html

因为c:/xampp/htdocs/mysite.是服务器上所有网站的根文件夹。

为什么我的网络服务器在c:/xampp/htdocs根目录而不是notfound.html中查找我的网站c:/xampp/htdocs?毕竟,我键入mysite / badfile.html,因此Web服务器(在我看来)应该理解 notfound.html 位于c:/xampp/htdocs/mysite文件夹空间。

1 个答案:

答案 0 :(得分:1)

您使用的是虚拟主机吗?
如果是这样,我认为存在问题,请打开httpd-vhosts.conf并查找 DocumentRoot C:/xampp/htdocs/bla/blah/mysite/的行,并写下主机的完整路径,如果它没有'使用目录路径工作。希望它有所帮助。