2013-02-14 109 views
0

我想为我的网站设置一个自定义404页面,使用:ErrorDocument 404 /404.html但是当我添加这个时,转到domain.com/dslkjflsdkjflskdjf不会重定向到404页面。相反,它会重定向到我的主页,主页上的所有内容都会被打破。htaccess 404重定向不工作

我想知道如果这个mod_rewrite.c模块是这个原因,我试着修改它(取出L,添加模块内的重定向等),但没有运气。

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L] 
</IfModule> 

回答

0

我不确定这个,但我认为你的服务器不会识别404错误,因为每个请求都被重定向到你的index.php。您必须在index.php中确定是否存在404错误并使用header()函数发送头文件。

+0

是否有一种方法可以重写该模块,以便我可以使用ErrorDocument来捕获404? – user1086337 2013-02-14 23:37:50

+1

我不知道你的index.php做什么,但我认为它控制输出并从数据库动态加载它,所以只有你的index.php会知道是否没有可用的内容。所以你的索引。 PHP必须捕捉错误并显示错误页面。所以在你的index.php中,如果用户请求的内容不存在,就发送404头部错误('HTTP/1.0 404 Not Found');之后包括你的404.php – user1950929 2013-02-14 23:46:58

+0

我已经试过你的解决方案,但是在PHP有时间向头发送404错误之前执行了模块伪指令。 – user1086337 2013-02-15 18:13:19