Apache2:将子文件夹重定向到 https(http://example.com/sub -> https://example.com/sub)

Apache2:将子文件夹重定向到 https(http://example.com/sub -> https://example.com/sub)

我正在 上建立一个Apache2服务器Ubuntu 16.04

我使用自签名证书,因为我希望我的nextcloud实例可用只有 https。目前,我使用永久重定向:

#/etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
    DocumentRoot /var/www/html
    Redirect permanent "/" "https://example.com/"
    ....
</VirtualHost>

我跟着该指南用于设置自签名证书。

不过,我想在公共 html 目录中发布文件,example.com/files并通过 提供它们http,这样用户就不需要信任我的自签名证书。

如果可以的话,我需要在 Apache 配置中做哪些更改才能实现该目标?

预期结果 :

  • example.com/nextcloud : 可用的仅有的使用 https
  • example.com/html : 使用 http 提供的目录和子目录
    • example.com/files
    • example.com/files/papers

本地目录:

/var/www/nextcloud
/var/www/html
/var/www/html/index.html
/var/www/html/files

apache2ctl -S 输出

VirtualHost configuration:
*:80                   example.com (/etc/apache2/sites-enabled/000-default.conf:1)
*:443                  example.com (/etc/apache2/sites-enabled/default-ssl.conf:2)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl 
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

编辑 :

启用重写模式后,我尝试添加里面sites-available/000-default.conf,但它不起作用:

 RewriteEngine On
 RewriteCond %{SERVER_PORT} 80
 RewriteCond %{REQUEST_URI} ^/nextcloud/.\*
 RewriteRule ^(.\*)$ https://example.com$1 [R,L]

答案1

我想我会做类似的事情(这完全未经测试):

#/etc/apache2/sites-available/010-http_example.com

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName example.com
    <Location /files>
      ....
    </Location>
    RewriteEngine On
    RewriteCond %{SERVER_PORT} 80
    RewriteCond %{REQUEST_URI} !^/files/?
    RewriteRule ^(.*)$ https://example.com$1 [R,L]

</VirtualHost>

相关内容