📜  重定向到 HTTPS 并删除 www - PHP (1)

📅  最后修改于: 2023-12-03 15:42:05.934000             🧑  作者: Mango

重定向到 HTTPS 并删除 www - PHP

当访问您的网站时,将其重定向到 HTTPS 并从 URL 中删除前缀“www”。使用 PHP 和 .htaccess 文件很容易实现这个重定向。

使用 PHP 实现重定向

可以使用以下 PHP 代码将您的网站重定向到 HTTPS 并删除“www”。

if($_SERVER["HTTPS"] != "on" || !preg_match('/^www\./', $_SERVER["HTTP_HOST"])) {
    header("Location: https://" . preg_replace('/^www\./', '', $_SERVER["HTTP_HOST"]) . $_SERVER["REQUEST_URI"], true, 301);
    exit();
} 
  • $_SERVER["HTTPS"] - 如果请求是通过 HTTPS 发送的,则返回“on”。
  • $_SERVER["HTTP_HOST"] - 返回 HTTP 请求中的主机头。
  • $_SERVER["REQUEST_URI"] - 返回当前请求 URI 的字符串。

此代码检查请求是否通过 HTTPS 发送,并且是否使用 www 前缀。如果是这种情况,则将请求重定向到 HTTPS URL 并删除 www 前缀。

使用 .htaccess 实现重定向

另一种方法是使用 .htaccess 文件的 RewriteRule 规则来重定向到 HTTPS URL 并删除 www 前缀。

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
  • RewriteCond %{HTTPS} off - 如果请求不是通过 HTTPS 发送的,则匹配下一行 RewriteRule。
  • RewriteCond %{HTTP_HOST} ^www\. [NC] - 如果 HTTP 请求中的主机名以 www. 开头,则匹配下一行 RewriteRule。
  • RewriteRule ^(.*)$ https://example.com/$1 [L,R=301] - 将请求重定向到 HTTPS URL,然后删除 www。例子使用 example.com 作为域名。
总结

无论你使用 PHP 还是 .htaccess 文件,都能够实现访问网站时重定向到 HTTPS 并删除 www 前缀。选择适合你的方法,提高你的网站安全性和体验。