我有一个旧的URL(www1.test.net
),我想将其重定向https://www1.test.net
我已经在网站上实施并安装了我们的SSL证书。
这是我的旧文件.htaccess
:
RewriteEngine On
RewriteRule !\.(js|gif|jpg|png|css|txt)$ public/index.php [L]
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ public/$1 [L]
我如何配置我的.htaccess
文件以便将URL自动重定向到https
?
谢谢!
答案
Update 2016
由于这个答案受到了一些关注,我想暗示使用虚拟主机进行此操作的一种建议的方法:Apache:重定向SSL
<VirtualHost *:80>
ServerName mysite.example.com
Redirect permanent / https://mysite.example.com/
</VirtualHost>
<VirtualHost _default_:443>
ServerName mysite.example.com
DocumentRoot /usr/local/apache2/htdocs
SSLEngine On
# etc...
</VirtualHost>
Old answer, hacky thing鉴于您的SSL端口未设置为80,这将有效:
RewriteEngine on
# force ssl
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
请注意,这应该是您的第一个重写规则。
Edit: 该代码执行以下操作。RewriteCond(ITION)检查请求的服务器端口是否为80(默认的HTTP-PORT,如果指定了另一个端口,则必须调整条件)。如果是这样,我们匹配整个URL(.*)
并将其重定向到HTTPS-url。%{SERVER_NAME}
可以用特定的URL替换,但是这样您就不必更改其他项目的代码。%{REQUEST_URI}
是TLD(顶级域)之后URL的一部分,因此您将被重定向到您来自的位置,但作为HTTPS。