使用的.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。
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错误文件的主要内容,如果未能解决你的问题,请参考以下文章
XAMPP/Apache 文件夹中的 .htaccess 未找到错误 404
htaccess 命令仅允许来自同一服务器的请求(不指定 IP)