我正在 上建立一个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
: 可用的仅有的使用 httpsexample.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>