首页 > 解决方案 > 如何将任何输入重定向到 https 和 www?

问题描述

我需要example.com被重定向到https://www.example.com.

我的 .htaccess 文件位于根目录中,配置如下:

RewriteEngine On
DirectoryIndex html/home5.html
RewriteRule ^\.htaccess$ - [F]
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

使用此配置,www.example.comhttps://example.comhttp://example.com被正确重定向到https://www.example.comwww.example.com/other.html等等分别工作)。

但是example.com被重定向到https://www.example.com/http://www.example.com/并且显然会产生“在此服务器上找不到请求的 URL”。为什么会这样?我需要更改什么才能使其正常工作?

我也不明白为什么用我当前的配置正确添加了https://example.comwww

标签: php.htaccessredirectwebserver

解决方案


有一个运行良好的 .htacces 我正在使用相同的问题,有 2 个步骤:

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]

首先,如果请求的 url “关闭”了 HTTPS,则重定向到 HTTPS 并在后面添加 url 请求查询(保存在 $1 中)。

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%1/$1 [L]

然后,www 的特殊情况。子域和 https on,如果在请求中匹配“www”,则重定向到 https on 的同一页面!

编辑:实际上你甚至不需要第二个条件


推荐阅读