非常确定基于各种示例(例如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
文件夹空间。
答案 0 :(得分:1)
您使用的是虚拟主机吗?
如果是这样,我认为存在问题,请打开httpd-vhosts.conf
并查找 DocumentRoot C:/xampp/htdocs/bla/blah/mysite/
的行,并写下主机的完整路径,如果它没有'使用目录路径工作。希望它有所帮助。