我想使用本地网址(相对路径)来显示我的自定义404错误消息,但它似乎没有按预期工作。正如apache文档所述here:
ErrorDocument指令的语法是:
ErrorDocument <3-digit-code> <action>
将操作视为:
要重定向到的本地网址(如果操作以&#34; /&#34;开头)。
要重定向到的外部网址(如果操作是有效的网址)。
- 醇>
要显示的文本(如果不是上述内容)。如果文本由多个单词组成,则必须用引号(&#34;)包装。
方法2和3正常工作。出于测试目的,想象一个名为test
的文件夹,其中包含3个文件。
index.php
:主页
404.php
:自定义404页面
.htaccess
:
RewriteEngine On
ErrorDocument 404 /404.php
现在访问此网址http://localhost/test/blah-blah
并未显示我的404.php
页面,而是显示默认的未找到页面,并显示以下消息:
The requested URL /tests/test-htaccess/asdasd was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an
ErrorDocument to handle the request.
知道如何解决这个问题吗?
答案 0 :(得分:1)
您可能已经找到了问题的解决方案,但是对于遇到同样问题的人,我会说问题是您使用localhost运行您的站点。
消息说Apache在尝试获取为Errordocument 404指定的文件时遇到404错误,所以它没有看到
/404.php
我建议您在主机文件中创建一个虚假域名并使用它设置虚拟域名。
OSX上的主机:
sudo nano /etc/hosts
Windows上的主机,右键单击此文件以管理员模式进行编辑:
C:\WINDOWS\System32\Drivers\Etc\Hosts
并输入以下内容:
127.0.0.1 myfakedomain.com
要设置虚拟主机,必须取消对httpd.conf中httpd-vhosts.conf的调用(接近结尾,在这种情况下使用MAMP)
# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
但此文件的位置取决于您使用的堆栈(Wamp,Mamp,Xampp等),因此请在其文档中使用关键字“Virtual host”进行搜索。
然后您就可以使用
运行您的网站了myfakedomain.com/
在您的浏览器中,404错误应该以正确的方式处理。