首页 > 解决方案 > 将每个非 www 或 http 域重定向到 www 和 https

问题描述

我想将所有每个域重定向到 www 和 https。
喜欢:

http://example1.com  
http://example1.com.  
http://www.example1.com  
http://www.example1.com.  
https://example1.com  
https://example1.com.  
https://www.example1.com.  

至:
https ://www.example1.com

http://example2.com  
http://example2.com.  
http://www.example2.com  
http://www.example2.com.  
https://example2.com  
https://example2.com.  
https://www.example2.com.  

至:
https ://www.example2.com

这是我在 htaccess 中 domain1 的代码:

    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} example1\.com [NC]
    RewriteCond %{HTTP_HOST} !^(www\.)?example1\.com$ [NC]
    RewriteRule ^(.*)$ https://www.example1.com/$1 [R=301,L]

    RewriteCond %{HTTPS} on
    RewriteCond %{HTTP_HOST} example1\.com [NC]
    RewriteCond %{HTTP_HOST} !^example1\.com$ [NC]
    RewriteRule ^(.*)$ https://www.example1.com/$1 [R=301,L]

我检查:
1. 如果地址没有 https 并且如果包含 example1.com 并且如果不完全像 www.example1.com 或 example1.com 那么重定向到https://www.example.com
2. 如果地址有 https 并且如果包含 example1.com 并且如果不完全喜欢 example1.com 则重定向到https://www.example.com

标签: regex.htaccess

解决方案


首先使用 Regex 替换开头,如下所示:

(我使用 C#,只使用正则表达式和想法)。

Regex.Replace(myString, @"^(https?:\/\/(www\.)?)?");

然后替换结束:

Regex.Replace(myString, @"\.$");

例如:

示例在这里

http://example2.com. 

将被第一个 Regex 替换为:

https://www.example2.com. 

在第二个正则表达式之后,到:

http://www.example2.com

推荐阅读