Php 使用.htaccess设置位于同一文件夹中的404错误文档
所以。。。我正在尝试设置与.htaccess(位于网站“根目录”)位于同一目录中的错误文档的路径,如下所示:Php 使用.htaccess设置位于同一文件夹中的404错误文档,php,apache,.htaccess,Php,Apache,.htaccess,所以。。。我正在尝试设置与.htaccess(位于网站“根目录”)位于同一目录中的错误文档的路径,如下所示: ErrorDocument 404 404.php 但是,它没有显示网页,而是在屏幕上写入404.php。我不能使用绝对路径,如: ErrorDocument 404 /404.php 因为我不是为我做的网站,我不知道该网站将存储在文件夹的绝对路径 我的问题是:我可以在.htaccess文档中设置相对路径而不是绝对路径吗?(如果是……如何?当在.htacc
ErrorDocument 404 404.php
但是,它没有显示网页,而是在屏幕上写入404.php。我不能使用绝对路径,如:
ErrorDocument 404 /404.php
因为我不是为我做的网站,我不知道该网站将存储在文件夹的绝对路径
我的问题是:我可以在.htaccess文档中设置相对路径而不是绝对路径吗?(如果是……如何?当在
.htaccess
或
上下文中有许多指令对相对目录敏感时,ErrorDocument
则不敏感。根据:
URL可以以斜杠(/)开头表示本地web路径(相对于
DocumentRoot),或者是客户端可以解析的完整URL
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
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>
尝试用一个额外的点指定它在同一目录中:ErrorDocument 404./404.phptried已经..不工作..它只是显示。/404.phpthank你的答案…我想我会问一下站点在哪里…在同一行上的RewriteCond
之后有一个注释将导致500服务器错误的消息RewriteCond:bad flag delimiter
。PHP 5.2不再支持完整URL。您将在服务器日志中收到多个通知:[通知]无法在401 ErrorDocument指令中使用完整URL---忽略!