2014-12-05 143 views
0

我对改变apache设置和修改httpd.conf很新。我已经安装了SSL,并试图将动态子域重定向到HTTPS。apache http重定向到https多重rewriteconditions

<VirtualHost *:80> 
    ServerName catchall.mydomain.com 
    ServerAlias *.mydomain.com 
    VirtualDocumentRoot /var/www/html/places/ 

Options -MultiViews 
RewriteEngine on 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /places/index.php?request=$1 [L] 
</VirtualHost> 

<VirtualHost *:443> 
    ServerName catchall.mydomain.com 
    ServerAlias *.mydomain.com 
    DocumentRoot /var/www/html/places/ 
    SSLEngine on 
SSLCertificateFile /SUPERSECRET 
SSLCertificateKeyFile /SUPERSECRET 
SSLCertificateChainFile /SUPERSECRET 
</VirtualHost> 

如果我去example.mydomain.com页面确实加载,但它不重定向HTTPS。我已经尝试了改变重写条件和规则的位置的多种变体,并且在进行更改后我重新启动了我的httpd服务。任何帮助是极大的赞赏。

回答

0

越来越多地搜索stackoverflow后,我能够缩小我的问题。

Apache Multiple Rewrite Rules

anubhava好心指出“L还是会需要作为最后一个标志是用于标记每个重写规则的结束。规则排序也很重要。”

RewriteEngine on 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ /places/index.php?request=$1 [L] 

这是正确的格式。我希望这可以帮助别人。