403错误页面在.htaccess中不使用F标志

时间:2014-03-26 22:19:59

标签: apache .htaccess mod-rewrite https httpforbiddenhandler

我尝试只允许https连接到我的子域。我的.htaccess目前看起来像这样:

Options -MultiViews -Indexes
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php

RewriteEngine On
#Only allow https requests
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} !/docs/?(.*)$ [NC]
RewriteRule ^ - [F]
#Docs file rewrite
RewriteRule ^docs/?$ /Docs.php

如果我删除了Only allow https requests部分并尝试访问目录(例如http://foo.bar.com/images/),则会显示我漂亮的403页面。但是,如果我将该部分留下并转到子域根(例如http://foo.bar.com/),我会得到默认的错误页面,这是否与htaccess有关,完全禁止访问所有文件?

实施例: 通过安全连接,403页面正常运行 - https://api.subjectplanner.co.uk/assets 但是通过非安全页面,它是默认页面 - http://api.subjectplanner.co.uk/assets

1 个答案:

答案 0 :(得分:0)

RewriteEngine On应该在您使用重写规则之前:

Options -MultiViews -Indexes
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php

RewriteEngine On

#Only allow https requests
RewriteCond %{HTTPS} off 
RewriteRule !^docs - [NC,F]

RewriteRule ^docs/?$ /Docs.php [L,NC]