使用的.htaccess设置在同一文件夹中的404错误文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用的.htaccess设置在同一文件夹中的404错误文件相关的知识,希望对你有一定的参考价值。

所以...我试图路径设置为位于同一目录中的.htaccess(位于网站“根”)这样的错误文件:

       ErrorDocument 404 404.php

不过不是显示的网页...它只是写404.php在屏幕上。我不能像使用绝对路径:

       ErrorDocument 404 /404.php

因为我不是做网站,我,我不知道该网站将被存储在文件夹的绝对路径...

我的问题是:我可以的.htaccess文件中设置相对路径,而不是绝对的吗? (如果是......怎么样?)

答案

在ErrorDocument指令的参数的URL路径总是相对于DocumentRoot的。

但是,您可以解决此使用mod_rewrite的模块。

RewriteEngine on
#if requested resource isn't a file
# and isn't a directory
# then serve local error script 
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule .* 404.php [L] 

确保404.php确实居然发出404响应头!

我没有测试过,但是这应该让你开始。还要注意的是使用ErrorDocument指令始终是最好这一点,并要求在网站将相对于DocumentRoot的驻留将是明智的,所以你可以写

ErrorDocument 404 /path/to/my/site/404.php
另一答案

虽然一些指令,同时一个或.htaccess上下文<Directory>内是相对目录敏感,ErrorDocument不是。每documentation

URL可以与本地网络路径(相对于DocumentRoot的)一个斜杠(/)开头,或者是它的客户端可以解决一个完整的URL。

Source

另一答案

ErrorDocument路径是相对于DocumentRoot服务器设置,通常在/etc/apache2/sites-enabled/000-default.conf发现这是怎么看我的文件:

<VirtualHost *:80>   <---------------- VirtualHost on port 80 is generally internet traffic
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/   <-------- this is what we're looking at
</VirtualHost>

注意,在这个文件中设置的DocumentRoot是绝对的文件系统 - var是底层文件夹/

所以我.htaccess文件驻留在/var/www/myapp/.htaccess,这意味着.htaccess文件存在从DocumentRoot的一个目录(它被设置为/var/www/)。所以为了有我ErrorDocument 404/var/www/myapp/errordocs/404.html服务,我需要设置,在我.htaccess,以下内容:

ErrorDocument 404 /myapp/customErrorPages/custom_404.html

需要注意的是,即使.htaccess文件驻留在myapp文件夹中,我还需要在路径中包含的/myapp/,作为路径是相对于DocumentRoot/etc/apache2/sites-enabled/000-default.conf定义

还要注意的是,路径必须以/开始为了阿帕奇阅读它的路径。设置“myapp/customErrorPages/custom_404.html”(不带前导/)将导致只是字符串被打印,而不是被送达的文件。

相当混乱,如果你没有在Apache中的Linux文件和配置文件目录路径的知识,而是让你周围戳会得到它;)

以上是关于使用的.htaccess设置在同一文件夹中的404错误文件的主要内容,如果未能解决你的问题,请参考以下文章

网站之.htaccess文件

wordpress怎么设置404错误页面

XAMPP/Apache 文件夹中的 .htaccess 未找到错误 404

htaccess 命令仅允许来自同一服务器的请求(不指定 IP)

根域和子文件夹中的两个 htaccess 中的 404 问题

.htaccess 重定向显示 404.php 文件的绝对路径。如何避免这种情况?