【问题标题】:Redirect non-www to www https Apache XAMPP将非 www 重定向到 www https Apache XAMPP
【发布时间】:2021-04-15 17:35:24
【问题描述】:

请原谅听起来与所问问题类似的问题,但是,我对 XAMPP 和 Apache 非常陌生,并且我已经尝试了其他线程中提到的重写规则的所有可能组合,我已将其放在httpd.confhttpd-default.conf 以及 .htaccess,我根本无法让重写规则起作用。

我只想将example.com 重定向到www.example.com。请注意,我从 HTTP 到 HTTPS 的重定向是 100% 工作的,所以如果有人能告诉我应该在哪里放置重写规则,以及使用哪一个来强制非 www 到 www,我将不胜感激。

我拥有对服务器的完全访问权限,因此我可以编辑 .conf.htaccess 文件。我还检查了httpd.conf 中允许覆盖读取.htaccess 文件的部分已启用。 .htaccess 文件当前位于我的网站所在的同一文件夹中。补充一下,我没有收到任何错误,它只是说如果我输入example.com,页面就会超时,如果我输入www.example.com,那么页面会按预期加载。

【问题讨论】:

  • "如果我输入 example.com,页面已经超时" - 这意味着您的服务器甚至没有配置为接受对域顶点的请求(所以在你这样做之前没有必要实现重定向)。另外,您在哪里以及如何实现 HTTP 到 HTTPS 重定向?
  • @MrWhite 我的 httpd.conf 文件中有以下内容: RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{SERVER_NAME}$1 [R,L]跨度>

标签: apache .htaccess web redirect


【解决方案1】:

在你的 .htaccess 文件中试试这个:

将 example.com 替换为您的网址。

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

【讨论】:

  • 谢谢,但不行。仍然只是给我“连接已超时”。澄清一下,.htaccess 文件是我网站文件夹的根目录,而不是在 htdocs 文件夹中。这可能是问题吗? Apache 配置为指向网站文件夹。
  • 这应该不是问题。您是托管自己的网站还是使用虚拟主机?如果您使用的是网络主机,问题可能是连接性。
  • 我正在使用 XAMPP 在我自己的 Windows Server 2008 上托管我自己的网站。如前所述,如果我将 www 放在前面,我的网站就没有问题。
  • 您的服务器是否配置为接受端口 80 上的请求?如果您无法访问这些页面,这可能就是问题所在。
  • 我不确定您所说的“我的服务器是否配置为接受端口 80 上的请求?”。在 Apache 中,它被配置为接受端口 80 是的,然后如上所述,我已重定向到 HTTPS 端口 443。
【解决方案2】:
The connection has timed out

这是 DNS 或服务器配置错误。该请求甚至没有到达您的服务器,或者您的服务器没有响应该请求。 (所以任何实现重定向的尝试自然会失败。)

快速检查example.comwww.example.com 的DNS 表明它们指向不同的IP 地址(您为每个地址配置了A 记录)。 example.com 主机有 1 位不同,看起来不正确(IP 地址不响应请求,因此“超时”)。

而不是为每个主机名创建单独的 A 记录。如果 www 子域应该指向与域顶点相同的站点(即example.com),则配置一个CNAME 记录,而不是将www.example.com 指向example.com(这不是“重定向”)。

然后您需要确保您的服务器将接受对非 www 主机名的请求。例如:

ServerName example.com
ServerAlias www.example.com

(您有可能将 ServerNameServerAlias 颠倒了 - 这是“OK”。)

而且 SSL 证书需要覆盖非 www 主机名(确实如此)。

然后,您可以如前所述实现非 www 到 www 的 HTTP 重定向。

【讨论】:

  • 可能有问题,所以我已经更改了我的 DNS 记录,现在只是等待它们更新,然后我会回来肯定回答。
  • 谢谢,更改 DNS 记录似乎有帮助,但至少对我而言,唯一有效的重定向指令如下: RewriteEngine on RewriteCond %{HTTP_HOST} 。 RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] (对不起,我不知道如何开始一个新段落或将代码放入一个灰色块)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 2017-02-02
  • 2014-12-13
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
相关资源
最近更新 更多