我需要将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.com
,https://example.com
和http://example.com
都被正确地重定向到https://www.example.com
(www.example.com/other.html
等分别工作)。
但是example.com
被重定向到https://www.example.com/http://www.example.com/
,显然会产生"请求的URL在此服务器上找不到"。为什么会发生这种情况?我需要做什么改变才能使它工作?
我也不明白为什么在我当前的配置https://example.com
中www
被正确添加。
有一个很好的工作。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打开,如果匹配"www"在请求中,重定向到使用HTTPS的同一页面!
编辑:实际上你甚至不需要第二个条件
重定向到https和没有www
要将所有请求重定向到https和非www,使用以下代码代替前面的代码:
<标题>规范HTTPS/没有www h1>Checks if mod_rewrite is available
Checks if HTTPS is off, or if the request includes www
If either condition matches, the request qualifies and is redirected to the https/non-www address
放在根目录.htaccess中,该技术覆盖所有请求,为您的站点提供完整的https/非www规范化。请记住用您自己的域名替换example.com的两个实例。
注意:如果你的网站因为在请求的URL中附加了index.php而遭受重复页面的困扰,请查看WP-Mix.com上的这篇文章,该文章解释了如何从URL中删除www和index.php。重定向到https和www
下面的。htaccess技术将符合条件的请求重定向到您的网页的https和www版本。添加到站点的根。htaccess文件:
<标题>规范https/www h1> 段代码做了以下事情:The first two lines conditionally redirect to https. If the HTTPS variable is set to off, then the request is redirected to https (see notes below if using a proxy).
The second two lines redirect to www. If the request/host does not begin with www., the request is redirected to www.
放在根目录.htaccess中,该技术覆盖所有请求,为您的站点提供完整的https/www规范化。此代码不需要编辑;它完全是即插即用的。使用代理的注意事项
如下所示:
"在某些形式的代理之后,客户端通过HTTPS连接到代理,负载平衡器,乘客应用程序等,%{HTTPS}变量可能永远不会打开并导致重写循环。这是因为即使客户端和代理/负载平衡器使用HTTPS,您的应用程序实际上也在接收纯HTTP流量。在这些情况下,检查X-Forwarded-Proto报头,而不是%{HTTPS}变量。">
因此,如果您正在使用某种代理服务或类似的服务,请将以下行添加到上述代码中:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
因此,如果使用代理服务器,最终结果看起来像这样:
规范https/www(使用代理时)
<IfModule mod_rewrite.c>
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule (.*) https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
参考
标题>标题>