现在我已经在我的时间里写了几十个重定向,一些有狡猾的正则表达式,有些更驯服,但今天,最简单的重定向是让我在CentOS服务器上运行,运行Apache 2.2.3。
我想做的就是将旧域上的每个请求重定向到首页的 ,无论路径和查询字符串如何新网站。这就是为什么mod_alias
Redirect
指令不合适的原因,因为它会将路径附加到新地址。
在Apache conf文件中,定义了虚拟服务器,我现在有
<VirtualHost THE.IP.ADDRESS:80>
DocumentRoot "/var/www/html/SITE_ROOT"
ServerName OLD_DOMAIN.com
<Directory "/var/www/html/SITE_ROOT">
Options FollowSymLinks
RewriteEngine On
RewriteRule ^$ https://NEW_DOMAIN [R=301,L]
AllowOverride None
</Directory>
</VirtualHost>
虽然按预期方式重定向到https://NEW_DOMAIN
,但始终会附加原始请求的路径,从而导致新网站上出现404错误。
例如,访问http://OLD_DOMAIN.com/asdf
重定向到https://NEW_DOMAIN.com/asdf
......当我真的想要到达https://NEW_DOMAIN.com/
为什么要追加路径,即使我没有收集模式匹配,也没有在目的地中指定这样的匹配?
在SO上有很多这样的答案:
但我发现将这些解决方案与我自己的配置进行比较存在差异。有什么想法吗?
答案 0 :(得分:0)
RewriteRule ^(.*)$ https://NEW_DOMAIN [R=301,NC,L]
应该有效。我已使用各种网址进行了测试,并始终重定向到https://NEW_DOMAIN
我的配置结构看起来有点不同:
<VirtualHost *:80>
ServerName OLD_DOMAIN.com
DocumentRoot "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs"
<IfModule mod_rewrite.c>
RewriteEngine on
Options FollowSymLinks
RewriteRule ^(.*)$ https://NEW_DOMAIN [R=301,NC,L]
.......
.......