apache ErrorDocument指令的本地URL在.htaccess文件中不起作用

时间:2017-07-27 16:28:58

标签: apache .htaccess mod-rewrite

我想使用本地网址(相对路径)来显示我的自定义404错误消息,但它似乎没有按预期工作。正如apache文档所述here

  

ErrorDocument指令的语法是:

     

ErrorDocument <3-digit-code> <action>

     

将操作视为:

     
      
  1. 要重定向到的本地网址(如果操作以&#34; /&#34;开头)。

  2.   
  3. 要重定向到的外部网址(如果操作是有效的网址)。

  4.   
  5. 要显示的文本(如果不是上述内容)。如果文本由多个单词组成,则必须用引号(&#34;)包装。

  6.   

方法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.

知道如何解决这个问题吗?

1 个答案:

答案 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错误应该以正确的方式处理。