如何在 AWS Route 53 中将非 www domain.com 重定向到 www domain.com(WordPress 博客)?
Posted
技术标签:
【中文标题】如何在 AWS Route 53 中将非 www domain.com 重定向到 www domain.com(WordPress 博客)?【英文标题】:How to redirect non-www domain.com to www domain.com(WordPress blog) in AWS Route 53? 【发布时间】:2016-02-22 16:29:11 【问题描述】:我的非 www domain.com 使用 GoDaddy,我的 WordPress 博客托管在 AWS EC2 中。我正在使用 Route 53 来处理 DNS 请求。在很多地方(包括 SOF)看到我的问题的现有解决方案是以非 www 域和 www 域的名称创建两个 S3 存储桶,用于重定向静态网站。这不是我的情况。
我的 WordPress 安装在 EC2 中,并且没有使用 S3 来保存我的数据。我希望这不是一个静态网站,不能遵循可用的一般解决方案。
我尝试了以下解决方案,但没有奏效
我尝试将 C-NAME 记录更改为 www.domain.com,但没有成功。
我尝试了 GoDaddy.com 提供的域转发功能,但没有成功。
我尝试修改 .htaccess 文件,但也没有用。这就是我在 Route 53 中的记录集的样子
Name Type Value TTL
------ ----- ----- ----
domain.com. A xx.xx.xxx.xxx (EIP) 300
domain.com. MX 1 ASPMX.L.GOOGLE.COM 3600
5 ALT1.ASPMX.L.GOOGLE.COM
5 ALT2.ASPMX.L.GOOGLE.COM
10 ALT3.ASPMX.L.GOOGLE.COM
10 ALT4.ASPMX.L.GOOGLE.COM
domain.com. NS ns-27.awsdns-03.com. 172800
ns-1190.awsdns-20.org.
ns-2028.awsdns-61.co.uk.
ns-855.awsdns-42.net.
domain.com. SOA xxxxxxxxx 900
如何将我的 domain.com 重定向到 www.domain.com?
【问题讨论】:
在 GoDaddy 中,您是否将名称服务器 (NS) 更改为 AWS Route 53 托管区域提供的四个?使用 www.whatsmydns.net 来解决 NS 正在解析您的域名的问题。另外,将您的 TTL 更改为 60 秒,这样更改会传播得更快。 是的,我确实更改了 NS(如上所述)。 whatsmydns.net 指向正确的 EIP。 感谢您的确认。当您修改 .htaccess 文件时,您是否也修改了 httpd.conf 文件?你能提供你的配置吗? 这是我添加到我的 .htaccess 文件中的内容(删除它是因为添加此文件后加载站点失败 - 这对我的 AWS 配置是否正确) RewriteEngine on rewritecond %http_host ^ec2instances.info [nc] rewriterule ^(.*)$ ec2instances.info/$1 [r=301,nc] 我还没有修改我的 httpd.conf 文件。 好的 - 实际上有很多重定向方法,但这是 AWS Route 53 的限制 - 我认为没有办法引导裸域。因此,您需要在您的 Web 服务器上进行重写,并且我假设您正在运行 Apache。由于我正在旅行,因此我现在无法让您完成这些步骤,但请查看此站点,该站点解释了不同的重定向方式 - 我认为方法 5 是您想要的:yolinux.com/TUTORIALS/ApacheRedirect.html#APACHE 【参考方案1】:我不愿发表我的评论作为答案,因为似乎有无数种方法可以设置和配置 Wordpress。无论如何,为了保持将这个问题保留在 amazon-web-services 标记中的精神,我运行了一个从 AWS Wordpress Cloudformation 模板部署的测试用例。我不确定这是否是您实际安装 Wordpress 的方式,但这是 一种 重定向方式:
确保您的 Cloudformation 模板成功完成。
这是我的托管区域的样子 - 我还没有添加 A 记录。
获取实例 IP 地址。请注意,在此示例中,我没有设置弹性 IP。因为我知道我不需要暂时停止实例,所以我选择坚持使用自动分配的随机公共 IP。
接下来,我为该 IP 的域顶点创建了 A 记录,然后为 www 创建了 A 记录。我还将 TTL 更改为 60 秒。
DNS 传播完成后,我尝试访问我的域名。如您所见,AWS Cloudformation Wordpress 安装默认使用不同的路径和 URL。
使用 URL,http://example.com/wordpress 成功了。
我没有完成这些步骤,但是当您转到 http://example.com/wordpress 时,它会启动一个设置屏幕。输入数据库名称和密码等所有信息,然后登录管理面板。完成所有这些后,您将进入“常规设置”屏幕。这是您的配置可能会有所不同的地方,但对于我来说,这些 URL 被列为 http://example.com/wordpress。我只是将这些 URL 更改为 http://www.example.com/wordpress。 (顺便说一句,我还尝试更改并保存永久链接部分以生成一个 .htaccess 文件,但由于无法写入文件而没有生成一个文件。我尝试自己制作,但我一直遇到“太多重定向”消息,因此这可能不是您想要采取的路线,具体取决于您的安装。)
您需要对 index.php 文件进行更改。对于我的安装,它位于 /var/www/html/wordpress/index.php。确保在更改之前制作副本。我只是在 wp-blog-header.php 前面添加了 /wordpress/。同样,此安装将 Wordpress 文件放在目录 /wordpress 中 - 您的安装可能会有所不同。
接下来你需要将修改后的 index.php 文件复制到 /var/www/html/ 然后重启 httpd 服务。
为了测试更改,我清除了我的 DNS 缓存并在 Chrome 中打开了开发人员工具的网络部分。
然后我打开了一个新标签(必须再次打开开发者工具),然后输入裸域名。
如您所见,该 URL 使用 301 永久重定向重定向到 www.example.com。
我会在这里提出另一个建议。您可以使用免费版本的 Cloudflare 为您进行重定向。 Cloudflare 提供了许多其他免费且有用的服务,例如 CDN,因此如果您不介意依赖 3rd 方服务(顺便说一句,这是一个有信誉的服务),它可能会更容易增加附加值。但是,正如我在屏幕截图中强调的那样,请注意,如果您使用转发,则无法使用其他一些高级规则集。
无论如何,我希望这会有所帮助!
【讨论】:
感谢@VirtualJJ 的详细回答。即使在 Route53 进行了所有更改后,它最初也没有工作。只有在WordPress url设置下更正了URLS后,该域才最终获得了www.domain。授予您此问题的答案。谢谢。以上是关于如何在 AWS Route 53 中将非 www domain.com 重定向到 www domain.com(WordPress 博客)?的主要内容,如果未能解决你的问题,请参考以下文章
在 Route53 和 CloudFront 中将 www 重定向到非 www
Docker + Gunicorn + Nginx + Django:将非 www 重定向到 AWS Route 53 上的 www
非 www 到 www 使用 AWS Elastic Load Balancer 和 Nginx
如何为顶点(example.com)和子域(www.example.com)配置相同的来源 - aws Route53 和 CloudFront