使用.htaccess重定向403错误

问题描述 投票:0回答:4

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

Options +FollowSymlinks

RewriteEngine on
ErrorDocument 403 notfound.html
RewriteRule notfound.html

感谢所有帮助。

谢谢 吉恩

linux .htaccess http-status-code-403
4个回答
5
投票

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

这里根本不需要 RewriteEngine 和 RewriteRule 指令。

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

ErrorDocument 403 /notfound.html

4
投票

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

ErrorDocument 403 /notfound.html

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

我希望如果有人尝试访问该目录的 URL,他们会被重定向到该网站的主页。我的问题是,对于上述情况,浏览器中的 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
投票

这是一个超级简单的方法:

使用这条线

Options -Indexes
ErrorDocument 403 /goaway.html

其中

goaway.html
在头部包含以下行:

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

就是这样...每个

403
错误都会转到根目录中的
goaway.html
文件,并且
goaway.html
会将它们重定向到您选择的 URL。


0
投票
RewriteEngine On 
ErrorDocument 403 http://www.yourdomain.example/
© www.soinside.com 2019 - 2024. All rights reserved.