【问题标题】:PHP: Redirect main domain to https://www, subdomain to https:// (without www)PHP:将主域重定向到 https://www,将子域重定向到 https://(不带 www)
【发布时间】:2018-06-01 01:56:12
【问题描述】:
我想修改一个php-文件以满足以下需求:
主域:
- 将
http 重定向到https
- 将
non-www 重定向到www
- (对于主域,需要
www 并且应该出现)
子域:
- 将
http 重定向到https
- 将
www 重定向到non-www
- (对于子域,
www 是不需要的,不应出现)
评论:子域的内容与主域完全不同(可能是 private.website.com 或 cloud.website.com 例如)。它不只是一种不同的语言。因此,通过浏览器或 CMS 创建内部转发似乎没有用。最好通过.hataccess 执行。
【问题讨论】:
标签:
apache
redirect
mod-rewrite
https
subdomain
【解决方案1】:
如果您使用的是 php,那么您需要编写一些条件并且您没有给出任何子域的示例如果您要使用 de.example.com、uk.example.com 等子域,那么您需要在浏览器语言的帮助下重定向或者您也可以在访问者位置的帮助下进行重定向
就像
<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
if($lang=="de")
{
header('Location: https://de.example.com/');
}
?>
在这种情况下,您需要执行以下操作。
1) http 到 https
RewriteCond %{HTTPS} !=on
2) 非 www 到 www
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
3) www 到非 www
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]