4

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

Options +FollowSymlinks

RewriteEngine on
ErrorDocument 403 notfound.html
RewriteRule notfound.html

所有帮助表示赞赏。

谢谢让

4

4 回答 4

5

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

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”中实际上没有索引)。

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

于 2014-06-06T11:54:40.947 回答
5

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

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

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

ErrorDocument 403 /notfound.html
于 2011-03-26T18:35:04.470 回答
0
RewriteEngine On 
ErrorDocument 403 http://www.yourdomain.example/
于 2019-12-12T17:02:00.307 回答
0

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

使用这条线

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会将它们重定向到您选择的 URL

于 2016-07-26T21:14:59.107 回答