我有一个在 443 和 80 上运行的虚拟主机。在 80 虚拟主机上我有一条这样的规则。
Redirect permanent / https://localhost
我正在测试在 /autos 中提供静态页面,我希望此流量不使用重定向规则,我希望此页面从 80 vhost 提供,而无需 SSL。所以我尝试设置 RewriteCond,然后为 cond 设置 RewriteRule。
RewriteCond %https://localhost !/autos$
RewriteRule !^/var/www/autos - [C]
这不起作用,因为我可能做错了。有什么建议吗?
答案1
我使用了两个 vHost 定义 - 一个用于 http,一个用于 https。对于 plone,我使用这个:
RewriteEngine On
RewriteRule ^/webalizer(.*) /webalizer$1 [PT]
RewriteRule ^/(.*) http://127.0.0.1:9673/VirtualHostBase/http/www.domain.tld:80/zope/VirtualHostRoot/$1 [L,P]
但也许在 https-vHost 中这也就足够了:
Redirect permanent /autos http://www.domain.de/autos
韋斯
答案2
您有两种可能性:
1)在端口 80 VirtualHost 上设置重定向,忽略子文件夹 autos:
RewriteEngine On
RedirectMatch 301 ^((?!(autos)).)*$ https://your-domain.ain/
注意:这不会保留 URL 中的路径。因此http://your-domain.ain/path/to/sth将被重定向至https://your-domain.ain/。
2)在我看来,更好的解决方案是为子文件夹 autos 创建一个自己的 VirtualHost。
<VirtualHost *:80>
ServerName autos.yourdomain.ain
DocumentRoot /var/www/autos
ServerAdmin [email protected]
# Write a seperate log per Virtualhost
CustomLog /var/log/apache2/autos.access_log combined
ErrorLog /var/log/apache2/autos.error_log
# Maybe you want to put some restrictions on the directory
<Directory /var/www/autos>
Options -Indexes +FollowSymLinks + Includes
AllowOverride All
# Restrict Access to certain IP's (change IP to a real IP or comment out)
Order Deny,Allow
Deny from All
Allow from 127.0.0.1 IP IP IP
Satisfy ALL
</Directory>
</VirtualHost>
你可以找到更多信息在 Apache VirtualHosts 和一些例子在 Apache 手册中。
编辑:对于单独的 VHOST,您需要使用 NameVirtualHost。确保您的 Apache conf 中有以下条目:
NameVirtualHost *:80
Listen 80
NameVirtualHost *:443
Listen 443