1

我的.htaccess文件中有下一个代码:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /

   RewriteCond %{HTTPS} off
   RewriteRule (.*) https://www.example.com%{REQUEST_URI} [R=301,NC,L]

   RewriteCond %{HTTP_HOST} !^(www|subdomain) [NC]
   RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
</IfModule>

使用此代码,以下 URL 将所有人重定向到https://www.example.com.

  • http://example.es
  • http://www.example.es
  • https://example.es

但是下一个没有重定向:

https://www.mydomain.es

有人可以帮我解决这个问题吗?

4

2 回答 2

1

解决了

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
于 2014-11-11T19:12:12.823 回答
0

您在底部第 3 行的条件是:仅将请求重定向到不以wwwsubdomain... 开头的主机名,因此https://www.mydomain.es不重定向 - 第一个规则未应用(HTTPS 已打开),第二个规则未应用,因为主机名www.mydomain.es确实以www..开头.

不是很确定,但我想你希望条件是这样的:

RewriteCond %{HTTP_HOST} !=www.mydomain.com [NC]

您也可以考虑合并这两个规则(但我不确定您的问题是否显示了您的所有要求):

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !=www.mydomain.com [NC]
RewriteRule .* https://www.mydomain.com%{REQUEST_URI} [L,QSA,R=301]
于 2012-12-07T15:08:30.910 回答