使用.htaccess重定向403错误

时间:2011-03-26 18:31:26

标签: linux .htaccess http-status-code-403

我想使用.htaccess重定向任何403,但它似乎不起作用。

Options +FollowSymlinks

RewriteEngine on
ErrorDocument 403 notfound.html
RewriteRule notfound.html

所有帮助表示赞赏。

由于 让

4 个答案:

答案 0 :(得分:4)

我发现前面的例子有一个问题,那就是:

ErrorDocument 403 /notfound.html

我的网站上有一个存储图像的目录,例如在domain.com/images

如果有人尝试访问目录的网址,我想要将其重定向到网站的主页。我的问题是,如上所述,浏览器中的URL将保留domain.com/images,然后主页将加载,但主页将引用它无法从该URL访问的样式表。 (它有意义 - 403应该显示错误信息)。

然后我尝试研究如何将403错误重定向到另一个URL,并且一些网站表示你不能做302或301 - 你错过了这一点:403是错误,而不是重定向。

但我找到了办法。这是/ images目录中的.htaccess文件:

Options -Indexes
ErrorDocument 403 /images/403.php
RewriteEngine on
RewriteRule ^403.php$ /index.php [R=301]

所以基本上第一行阻止了目录列表。

第二行表示对于“权限被拒绝”(即403错误,这是第一行给出的),该站点应该加载文件“/images/403.php”。但实际上你并不需要在该目录中创建任何403.php文件,因为......

第三行打开您的重定向引擎

并且第四行表示如果用户尝试加载页面403.php(即在此.htaccess文件所在的“/ images”目录中),则应使用301(永久)重定向它们。重定向到/index.php - 这是根目录(即主页)的索引,而不是/ images子目录的索引(事实上,“/ images”中确实没有索引)。

因此 - 如何使用301(永久)重定向将403重定向到另一个URL(或者,您也可以尝试302临时重定向)。

答案 1 :(得分:3)

ErrorDocument指令的URL部分应该以前导斜杠开头,它表示相对于DocumentRoot的路径,或者它应该是完整的URL(如果要使用外部文档)。

你根本不需要RewriteEngine和RewriteRule指令。

因此,假设您的notfound.html位于您网站的根级别,您的指令应如下所示:

ErrorDocument 403 /notfound.html

答案 2 :(得分:0)

RewriteEngine On 
ErrorDocument 403 http://www.yourdomain.com/

答案 3 :(得分:-1)

这是一种非常简单的方法:

使用此行

Options -Indexes
ErrorDocument 403 /goaway.html

其中 goaway.html 在head部分中包含以下行:

<meta HTTP-EQUIV="REFRESH" content="0; url=HERE YOU PUT THE URL YOU ARE REDIRECTING TO" />

那就是......每个403错误都会转到根目录中的 goaway.html 文件中, goaway.html 会将它们重定向到您选择的网址