我有一个旧的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。

来自: stackoverflow.com