在维护当前规则的同时强制htaccess中的所有页面都为https

时间:2011-10-14 15:00:23

标签: .htaccess mod-rewrite

我将当前的htaccess放在http://www.mydomain.com/dev

的文件夹中
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /dev/index.php [L]

我尝试将最后一行更改为:

RewriteRule ^(.*)$ https://www.mydomain.com/dev/index.php [L]

然而,这不起作用,该网站抛出了一个ISE。一切都需要通过mydomain.com/dev/index.php运行。

1 个答案:

答案 0 :(得分:0)

实现此目的的最简单方法是在端口80上创建单独的虚拟主机,将所有内容重定向到https。应该在Apache配置中看起来像这样:

<VirtualHost *:80>
    ServerName example.com

    # Force usage of SSL
    Redirect / https://example.com/
</VirtualHost>

<VirtualHost 127.0.0.1:443>
    DocumentRoot /var/www/vhosts/example.com/httpdocs
    ServerName example.com
</VirtualHost>

这应始终重定向到请求的页面的ssl等效项,同时保持所有其他规则不变。如果您无权访问全局Apache配置(例如在共享主机上),请让您的主机将上述内容应用于您的vhost条目。