2014-12-05 141 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] 

這是正確的格式。我希望這可以幫助別人。