所以在过去的几个小时里,我一直对我的.htaccess文件无法正常工作感到沮丧。
我有两个子目录:secure.mysite.ca和storage.mysite.ca,需要加密ssl。当我将https放在网址前面时(https://secure.mysite.ca/或https://storage.mysite.ca/),这些网站会有效,但当我将http放在前面时,它会重定向到我的根网站(http://mysite.ca/)。当有人试图转到未加密版本时,我想重定向到网站的https版本。
另外,我想将访问http://mysite.ca/的所有流量重定向到http://www.mysite.ca/(即前面的www)
这个.htaccess文件曾经在一年前工作但现在却没有。
这是我在根文件夹中找到的htaccess文件:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mysite\.ca$ [NC]
RewriteRule ^(.*)$ http://www.mysite.ca%{REQUEST_URI} [R=permanent,L]
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{HTTP_HOST} ^(secure|storage)\. [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
我做错了吗?我应该将.htaccess文件放在子目录中吗?
编辑:这是secure.fixnode.ca,storage.fixnode.ca和www.fixnode.ca的virtualhost配置文件。请让我知道我做错了什么
storage.fixnode.ca.conf
<VirtualHost *:443>
DocumentRoot "/var/www/fixnode_website/content/Online Storage"
<Directory "/var/www/fixnode_website/content/Online Storage">
allow from all
Options +Indexes
</Directory>
SSLEngine on
ServerName storage.fixnode.ca
SSLCertificateFile /path/to/cert/storage.crt
SSLCertificateKeyFile /path/to/private key/private.key
</VirtualHost>
secure.fixnode.ca.conf
<VirtualHost *:443>
DocumentRoot "/var/www/fixnode_website/content/Secure Login"
<Directory "/var/www/fixnode_website/content/Secure Login">
allow from all
Options +FollowSymlinks
</Directory>
SSLEngine on
ServerName secure.fixnode.ca
SSLCertificateFile /path/to/cert/cert.crt
SSLCertificateKeyFile /path/to/cert/mykey.key
</VirtualHost>
最后是我的根域www.fixnode.ca.conf的虚拟主机
<VirtualHost *:80>
DocumentRoot /var/www/fixnode_website
<Directory "/var/www/fixnode_website">
allow from all
Options +Indexes
</Directory>
ServerAlias fixnode.ca
ServerName www.fixnode.ca
</VirtualHost>
答案 0 :(得分:1)
您需要将此规则放在两个子域的子目录中:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(secure|storage)\. [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
答案 1 :(得分:1)
如果您最近对系统进行了更改,则可能覆盖了您的apache配置文件(例如httpd.conf or apache2.conf
),这可能会将选项重置为默认值。