我在服务器上安装了 SSL,但我只想将其用于特定目录(例如 www.domain.com/users),而不用于服务器上的任何其他内容(例如 www.domain.com?)
答案1
你可能想要两样东西。
要求该目录使用 SSL:
<Directory "/usr/local/www/path/to/directory"> SSLRequireSSL </Directory>
将通过 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/directory
为http://....
),但请注意,某些浏览器可能会拒绝将 https:// URL 重写为 http://。
实现该 mod_rewrite 规则取决于您自己,Apache 手册的 mod_rewrite 部分以及你用来应对 mod_rewrite 的任何酒精饮料 :-)