htaccess mod重写非www到www和http到https IF站点不能直接通过IP地址访问

时间:2014-12-18 03:06:38

标签: apache .htaccess mod-rewrite redirect

我们有一个目前通过IP地址和域名访问的网站,具体取决于用户。

如果用户通过域名访问网站,我们需要将其重定向到正确的版本(如果以不正确的方式访问),例如: 301重定向到https://www.example.com(需要同时为www和https)

所以如果他们访问了一个页面:https://example.com/page,它将会重定向到https://www.example.com/page 如果他们访问了一个页面(没有https)http://wwww.example.com/page,它将会重定向到页面的https版本:https://www.example.com/page 最后,如果他们没有htts且没有www,它将重定向到https和www版本。

但是,如果他们直接通过IP地址访问网站/页面(例如:http://131.14.12.145/ - 但这可能在技术上有所改变),它将不会执行上述任何重定向。

有关如何使用htaccess规则进行设置的任何建议吗?

由于

1 个答案:

答案 0 :(得分:0)

试试这个......

Options +FollowSymLinks
RewriteEngine On
# (1) Redirect http to https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# (2) Redirect non-www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# (3) Direct access through IP
# CHANGE 11.11.11.11 TO YOUR ACTUAL IP
RewriteCond %{HTTP_HOST} ^11\.11\.11\.11$
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]