Apache 服务器配置从 IP 重定向到域名 EC2

Apache 服务器配置从 IP 重定向到域名 EC2

我在 Linux EC2 实例上运行 apache 网络服务器。

问题是,您可以使用 IP 地址、DNS 和域名访问服务器。这会给 SEO 带来问题,我想解决它。

我在 apache 文档中读到,你可以执行 mod_rewrite,如果你有 root 访问权限,则需要在 httpd.conf 中执行此操作,否则需要在 .htaccess 中执行每个目录覆盖。我有 root 访问权限,因此我尝试更改 httpd.conf

如果用户输入 http://52.17.12.123/ 或者 http://ec2-52.17.12.123.eu-west-1.compute.amazonaws.com/

我希望他们被重定向到 www.example.com

这是我尝试过的

<VirtualHost *:80>
 DocumentRoot "/var/www/html/my-website"
 # Other directives here
 RewriteEngine On
 RewriteCond %{HTTP_HOST} !^52.17.12.123.com$
 RewriteRule /* http://www.example.com/ [R]
</VirtualHost>

它似乎部分起作用了,但是 www.example.com 由于太多重定向而无法加载。

答案1

RewriteCond %{HTTP_HOST} !^52.17.12.123.com$意味着RewriteRule只要主机名不是 ,就会应用52.17.12.123.com

但是,您的目标是当主机不是您自己的主机名时进行重定向。因此,您需要使用此配置进行重写:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$
RewriteRule ^ http://www.example.com/ [R=301]

这应该可以实现您的目标,并防止重写查找www.example.com

我还添加了=301重写规则,以便 Apache 将向浏览器发送301 Moved Permanently重定向而不是302状态代码,这是执行 SEO 重定向的推荐方式。

答案2

我会尝试这样的事情:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^52\.17\.12\.123$ [OR] 
RewriteCond %{HTTP_HOST} ^ec2-52\.17\.12\.123\.eu-west-1\.compute\.amazonaws\.com$ 
RewriteRule (.*) http://www.example.com/$1 [R=301,L]

相关内容