所以我为我的网站创建了SSL密钥和证书。我能够通过在我的httpd-vhosts.conf
:中使用以下代码将我的网站的每个页面转发到HTTPS
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
这对每个页面都很好,但我希望只能在我的帐户页面上将http转发到https。我在https-vhosts.conf
:中尝试了此代码
<VirtualHost *:80>
DocumentRoot "/Applications/MAMP/htdocs/Website/Account"
ServerName example.com
ServerAlias www.example.com/Account
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>
# SSL Configuration
<VirtualHost *:443>
DocumentRoot "/Applications/MAMP/htdocs/Website/Account"
ServerName example.com
ServerAlias www.example.com/Account
SSLEngine on
SSLCertificateFile /Applications/MAMP/conf/apache/server.crt
SSLCertificateKeyFile /Applications/MAMP/conf/apache/server.key
</VirtualHost>
它不重定向到https,只是保持标准http。我的证书是正确的,所以这不是问题所在。
非常感谢您的帮助。
提前感谢!
在重写中添加第二个条件,以便只有在该条件为true时才应用它。这也允许您提取请求的必需部分:
# http Configuration
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} ^/Account
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
DocumentRoot "/Applications/MAMP/htdocs/Website"
<Directory /Applications/MAMP/htdocs/Website>
[...]
</Directory>
</VirtualHost>
# SSL Configuration
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /Applications/MAMP/conf/apache/server.crt
SSLCertificateKeyFile /Applications/MAMP/conf/apache/server.key
DocumentRoot "/Applications/MAMP/htdocs/Website"
<Directory /Applications/MAMP/htdocs/Website>
[...]
</Directory>
</VirtualHost>