www
的方法。我已经能够分别强制使用两种方法,但是在一起我一直遇到重定向问题。以下代码在处理这种格式的URL时起作用:
http://example.com
并正确重定向到https://www.example.com
,但是当传入URL是https://example.com
时,它将不会转发到https://www.example.com
-有任何建议吗?到http://www.example.com
。RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} !^www.example\.com$
RewriteRule ^(.*)$ https://www.example.com/ [R,L]
#1 楼
第一行用于防止内部URL重写。这可能会导致显示不同的页面,所以我将其删除。如果主机是
example.com
或未通过HTTPS请求,它将被重写为https://example.com/
。即,它一次完成将http://example.com
,http://www.example.com
和https://example.com
重写为https://www.example.com
。RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.example.com/ [R,L]
有关Apache 2.2 mod_rewrite的文档。
ve个子域(如
forum.example.com
),第一个规则应为原样。否则,您也可以对www.example.com
进行否定匹配。#2 楼
第三行不必是:RewriteCond %{HTTP_HOST} ^example\.com$
#3 楼
试试这个:RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} !^www.example\.com$
RewriteRule ^(.*)$ https://www.example.com/ [R,L]
#4 楼
您还可以使用以下我完美使用的代码行。(如果不使用CloudFlare,请移除顶部RewriteCond)
RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' [OR]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
#5 楼
刚刚在我的网站上实现了此功能。添加到我的.htaccess文件顶部。
重定向输入www或不输入www,http或https的用户的所有实例。
# BEGIN HTTPS Redirect
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/ [R,L]
# END HTTPS Redirect
#6 楼
我测试了上面给出的所有建议,但没有一个涵盖整个场景。我希望所有访问者都可以访问
https://www.example1.com/
其他用户提供的某些代码可以将非安全和/或非www网址带到
https://www.example1.com/
,但是,它们都没有涵盖https://example1.com
也可以转换为“ www”。会有所不同。这是为我工作的代码:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example1\.com$ [OR]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example1.com/ [L,R=301]
最后一行可能也是:
RewriteRule ^(.*)$ https://www.example1.com/ [R,L]
但是我使用代码“ 301”发送“永久移动”消息,希望谷歌和其他搜索引擎可以更新旧链接。