限制 Apache 只允许使用 SSL 访问某些目录

DrS*_*ker 34 ssl https apache-2.2

我有一个带有 SSL 证书的 Apache 2.2 服务器,它托管了几个只能使用 SSL 访问的服务。

即:https://myserver.com/topsecret/应该被允许,而http://myserver.com/topsecret/应该被拒绝,或者理想情况下,重定向到 https。 http://myserver.com/public不应该有这个限制,并且应该使用 http 或 https 工作。
允许/拒绝 http 的决定是在顶级目录中做出的,并影响其下的所有内容。

是否有可以在 Apache 配置中放置的指令以这种方式限制访问?

Tho*_*mas 39

SSLRequireSSL指令是你在找什么。

<VirtualHost>如果您不使用虚拟主机,则在您的, 或顶层:

<Directory /topsecret>
  SSLRequireSSL
</Directory>
Run Code Online (Sandbox Code Playgroud)

或在.htaccess

SSLRequireSSL
Run Code Online (Sandbox Code Playgroud)

  • 好的,我用一个例子更新了我五年前的帖子:) (8认同)

小智 8

在全局配置中,您可以使用:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{HTTPS} !on
   RewriteRule .* https://%{HTTP_HOST}/%{REQUEST_URI} [R=301,L,QSA]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

同样,您可以在安全目录树的第一个目录中使用 .htaccess 文件:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{HTTPS} !on
   RewriteRule .* https://%{HTTP_HOST}/%{REQUEST_URI} [R=301,L,QSA]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

最后一个也可以放在全局或虚拟主机配置中的目录指令中。