我正在linux EC2实例上运行apache webserver。
问题是您可以使用IP地址,DNS和域名访问服务器。 这会导致search引擎优化问题,我想整理它。
我已经阅读了Apache文档,你可以做一个mod_rewrite,这需要在httpd.conf中完成,如果你有root权限,否则在每个目录覆盖的.htaccess。 我有root权限,所以我正在尝试更改httpd.conf
如果用户inputhttp://52.17.12.123/或http://ec2-52.17.12.123.eu-west-1.compute.amazonaws.com/
我希望他们被redirect到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>
似乎部分工作,但由于许多redirectwww.example.com不加载。
RewriteCond %{HTTP_HOST} !^52.17.12.123.com$表示只要主机名不是52.17.12.123.com就应用RewriteRule 。
但是,您的目标是每当主机不是您自己的主机名时redirect。 因此,您需要使用此configuration进行重写:
RewriteEngine On RewriteCond %{HTTP_HOST} !^www.example.com$ RewriteRule ^ http://www.example.com/ [R=301]
这应该完成您的目标,并防止重写www.example.com 。
我还在重写规则中加了=301 ,这样Apache会发送301 Moved Permanentlyredirect,而不是302状态码给浏览器,这是做SEOredirect的推荐方式。
我会尝试这样的事情:
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]