SSL 保护目录

SSL 保护目录

我在服务器上安装了 SSL,但我只想将其用于特定目录(例如 www.domain.com/users),而不用于服务器上的任何其他内容(例如 www.domain.com?)

答案1

你可能想要两样东西。

  1. 要求该目录使用 SSL:

    <Directory "/usr/local/www/path/to/directory">
        SSLRequireSSL
    </Directory>
    
  2. 将通过 http 访问该页面的用户重定向到 https:

    RewriteEngine on
    RewriteCond %{REQUEST_URI} ^/path/to/directory [NC]
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)$ https://example.com$1 [R=301,L]
    

还有其他方法可以完成同一件事;如果这种方法不适合您的情况,请说出来,我们可以制定出您想要完成的具体细节。

答案2

我不知道你是否真的想做你想做的事(对一个目录使用 SSL,否定更常见的是想要要求为一个目录提供 SSL,并允许它对所有其他目录都是可选的。

要要求 SSL,只需创建一个<Directory>(或)块并向其中<Location>添加指令(SSLRequireSSL有关该指令的更多信息,请参阅 Apache 手册)。

如果你确实想要拒绝所有其他目录的 SSL,您可以在上述解决方案的基础上使用 mod_rewrite 来实现(重写https://anything-that-doesnt-match/your/secure/directoryhttp://....),但请注意,某些浏览器可能会拒绝将 https:// URL 重写为 http://。
实现该 mod_rewrite 规则取决于您自己,Apache 手册的 mod_rewrite 部分以及你用来应对 mod_rewrite 的任何酒精饮料 :-)

相关内容