apache http重定向到https多重写条件

时间:2014-12-05 02:55:27

标签: apache ssl https virtualhost

我非常擅长更改apache设置和修改httpd.conf。我已经安装了SSL,并尝试将动态子域重定向到HTTPS。

<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服务。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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

Apache Multiple Rewrite Rules

anubhava善意地指出&#34; L仍然需要,因为Last标志用于标记每个重写规则的结束。规则的排序也很重要。 &#34;

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

现在这是正确的格式。我希望这有助于其他人。