有没有办法让apache发送一个403,而不是在一个.htaccess文件中的一些configuration401? 我使用Dreamhost btw。
编辑:
我应该更好地解释我在做什么。 我正在做一个HTTP身份validationlogin页面与jQuery。 我的目标是绕过该浏览器popuplogin窗口。 要做到这一点,我想服务器给我一个403错误,当我尝试访问受保护领域的文件,而不是我目前正在默认的401。 当我得到403,我可以运行一个函数,告诉用户他们有一个错误的密码,而不是该浏览器的popup窗口,它不告诉用户他们得到的信息是错误的,这只是使网站看起来不好。
谢谢=)
你可以使用重写规则来产生一个403。
RewriteEngine on RewriteRule myfile myfile [F]
在这种情况下,F表示被禁止(403)。
编辑
…是的,这是在.htaccess文件。
编辑
如radius答案的评论中所述,您需要检查用户是否被授权。 我不知道你是如何做你的授权,但我的猜测是,这是不可能的。 我通常在PHP中进行授权,在这种情况下,您可以简单地执行一个header('HTTP/1.1 403 Forbidden'); ,但你似乎正在使用一些其他的机制(我想,Apache内部)。
chmod该文件,使其不可读。
给我们更多关于你在做什么的信息。
如果你有一个受保护的资源使用authenticationapache将返回代码401.如果它返回403而不是401您的浏览器不会要求您input密码。
如果资源不受authentication保护,则不应得到错误401。
编辑:根据您的编辑,我明白,你想http://网站/文件/ forbar返回403,并有一个403错误页面要求input密码(比如说http://website/403.php )。
我不认为你可以做到这一点,因为你的脚本将无法告诉Apache,当用户login时不再禁止该文件。
所以你可以让文件返回403,但它永远不会返回别的东西。
我会做的方式是有文件外部的公共Web目录和用户加载http://website/myscript.php?getfile = foobar ,以便您的脚本可以控制,如果用户进行身份validation,并给予文件,当用户将被authentication。
然后你可以添加一个apacheredirect来告诉http://website/file/ “something”redirect到http://website/myscript.php?getfile = “something”(这个是RedirectMatch / file /( *) http://website/myscript.php?getfile = $ 1