如何仅在指定的XAMPP目录上启用SSL

时间:2013-12-22 15:10:59

标签: apache ssl xampp

我已经能够使用makecert制作自签名证书,该证书目前在C:// XAMPP / htdocs

中的所有目录上启用HTTPS

我有两个目录,我希望与众不同,

c:/XAMPP/htdocs/PLACEHOLDER1 
c:/XAMPP/htdocs/PLACEHOLDER2

我想知道是否可以将SSL范围限制在一个目录中,例如在这种情况下'placeholder1'。

这是我第一次使用SSL,对任何混淆感到抱歉。

1 个答案:

答案 0 :(得分:5)

http://robsnotebook.com/xampp-ssl-encrypt-passwords提供了一些有关如何仅通过SSL加密访问文件夹的良好信息。它具体涵盖了这两个项目,这不是直接引用,而是回答您问题的本质摘录:

仅使用SSL加密设置文件夹
首先,我们需要通知Apache,您要加密的文件夹应始终使用加密(并且永远不会明确)。这是通过在配置文件中的每个所需<Directory>列表中放置一个SSLRequireSSL指令来完成的(可以将它放在最后,就在</Directory>之前)。

Alias /web_folder_name "C:/xampp/foldername"
<Directory "C:/xampp/foldername">
    ...
    ...
    SSLRequireSSL
</Directory>

某些文件夹的“http”重定向为“https”

下一个可选步骤是将“http”请求重定向到我们想要保护的页面的“https”请求。这更加用户友好,并允许您在键入地址时仍然使用http(并自动切换到https://和加密)。如果您不这样做,并且您使用了SSLRequireSSL,则只能通过键入https://来访问这些页面。这很好,可能更安全一点,但不是那么用户友好。要完成重定向,我们将使用mod_rewrite,以便我们不必在配置文件的这一部分中使用服务器名称。这有助于减少配置文件中写入服务器名称的位置数量(使配置文件更易于维护)。

首先,我们需要确保启用mod_rewrite。要执行此操作,请修改c:\xampp\apache\conf\httpd.conf并删除此行中的注释(#字符):

#LoadModule rewrite_module modules/mod_rewrite.so

使它看起来像这样:

LoadModule rewrite_module modules/mod_rewrite.so

现在,将以下文字粘贴到c:\xampp\apache\conf\extra\httpd-xampp.conf的顶部:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Redirect /xampp folder to https
    RewriteCond %{HTTPS} !=on
    RewriteCond %{REQUEST_URI} xampp
    RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R,L]

    # Redirect /phpMyAdmin folder to https
    RewriteCond %{HTTPS} !=on
    RewriteCond %{REQUEST_URI} phpmyadmin
    RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R,L]

    # Redirect /security folder to https
    RewriteCond %{HTTPS} !=on
    RewriteCond %{REQUEST_URI} security
    RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R,L]

    # Redirect /webalizer folder to https
    RewriteCond %{HTTPS} !=on
    RewriteCond %{REQUEST_URI} webalizer
    RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R,L]
</IfModule>

如果您要将其他文件夹重定向到https://,请在下方添加通用文字(但替换您的文件夹名称):

# Redirect /folder_name folder to https
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} folder_name
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [R,L]