使用.htaccess重定向404

时间:2013-06-27 10:40:47

标签: .htaccess http-status-code-404

我想在我的.htaccess文件中设置一条规则,以便任何被激活的网址导致404,因为没有这样的文件,会自动重定向到网站的主页: 的index.php

我的.htaccess文件如下所示:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^queenslandbeerweek.com.au$ [NC]
RewriteRule ^(.*)$ http://queenslandbeerweek.com.au/$1 [L,R=301]
ErrorDocument 404 /index.php 

这会导致index.php文件显示但已损坏,并在地址栏中留下了错误的URL。

我在另一篇文章的回答中读到,它与将错误的URL作为参数传递有关,导致页面无法正确加载,因为页面从数据库调用数据并且传递了错误的URL作为index.php的参数,但没有提示解决方案是什么。

我想要发生的是,如果在地址栏中输入了错误的URL,或者如果跟踪链接,则链接到不存在的文件,完全忘记此文件,删除所有内容,然后转到主页index.php。

index.php从数据库中调用数据

这是否可以使用.htaccess文件?

我与其他网站存在完全相同的问题。

非常感谢任何帮助。 干杯,Al。

2 个答案:

答案 0 :(得分:1)

我认为您不能直接重定向错误文档,但可以捕获不存在的文件和文件夹

!-f表示不是文件!-d表示不是目录,$1(.*)中的任何内容(网址中的路径)

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php?errorurl=$1 [R=301,L]

答案 1 :(得分:0)

ErrorDocument 404 /404.php

您可以将404错误模板放在任何您想要的位置。例如,您可以将所有错误消息放在名为errormessages

的文件夹中
ErrorDocument 404 /errormessages/404.php