2011-03-26 117 views
3

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

Options +FollowSymlinks 

RewriteEngine on 
ErrorDocument 403 notfound.html 
RewriteRule notfound.html 

所有帮助表示赞赏。

感谢 让

回答

3

的ErrorDocument指令的URL部分应利用一个斜线,这表明是相对于你的DocumentRoot路径开始,或者它应该是一个完整的URL(如果你想使用外部文件)。

在这里你不应该需要RewriteEngine和RewriteRule指令。

因此,假设您的notfound.html是在您的网站的根目录下,你的指令应该是这样的:

ErrorDocument 403 /notfound.html 
+0

ErrorDocument 403 http://localhost/notfound.html – X10nD 2011-03-26 18:43:08

+0

我添加了一个小例子。 – 2011-03-26 18:45:39

+0

url是localhost/adf应该显示notfound.html,其中403文档位于根目录中。 – X10nD 2011-03-26 18:47:58

3

我发现前面的示例中的一个问题,这是:

ErrorDocument 403 /notfound.html 

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

我想,如果有人试图访问目录的URL,他们被重定向到网站的浩mepage。在上述情况下,我的问题是浏览器中的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临时重定向)。

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

+3

欢迎来到SO :-)请适当地在你的答案中格式化代码,只是为了得到一些培训... – 2016-07-26 21:27:57