http://和http:// www。到https:// www

时间:2011-08-24 16:54:05

标签: .htaccess mod-rewrite redirect rewrite

也许有人可以帮助我。我需要这样的重写规则:从http://http://www.重定向到https://www.mydomain

例如,有mydomain.com的用户将其重定向到https://www.mydoamin,如果他输入www.mydomain.com,他会被重定向到https://www.mydomain。因此,如果有人输入mydomain.comwww.mydomain.com,他应该被重定向到https://www.mydomain

如果可能,还可以重定向到login.mydomain.com - >这样的子域名https://login.mydomain.com

HTTPS的所有内容。

3 个答案:

答案 0 :(得分:4)

好吧,我在上一条评论中发现了一个小错字,如果这些配置不能按预期运行,我想知道哪个部分是错的:

RewriteCond %{HTTPS} !=on
RewriteRule .* https://www.mydomain.com%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} !^www\.mydomain\.com
RewriteRule .* https://www.mydomain.com%{REQUEST_URI} [R=301,L]

以上由两部分组成:

  1. 如果网址未以https://开头,则无论主机名或网址的其余部分如何,都会重定向到https://www.mydomain.com/
  2. 如果网址名称不是www.mydomain.com,则重定向到https://www.mydomain.com/,无论如何网址为http://或https://
  3. 更新: 最后,有机会自己测试。由于某些原因,匹配规则不像我预期的那样有效。将通配符($ 1)替换为%{REQUEST_URI},并将^ /(。)$替换为。

答案 1 :(得分:3)

这是你可以放在.htaccess文件中的内容

RewriteEngine On
SSLOptions +StrictRequire
SSLRequireSSL
RewriteCond %{HTTPS} !=on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

答案 2 :(得分:2)

你的两个代码都不起作用。

目前我有这个,但只能用于http(没有“s”)

# http to www #
RewriteCond %{HTTP_HOST}   !^www\..* [NC]
RewriteCond %{HTTP_HOST}   !^.*\..*\..* [NC]
RewriteRule ^(.*)          http://www.%{HTTP_HOST}/$1 [R=301,L]