mod_rewrite整个网站只对新网站的首页

时间:2018-02-13 13:18:58

标签: apache mod-rewrite

现在我已经在我的时间里写了几十个重定向,一些有狡猾的正则表达式,有些更驯服,但今天,最简单的重定向是让我在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上有很多这样的答案:

但我发现将这些解决方案与我自己的配置进行比较存在差异。有什么想法吗?

1 个答案:

答案 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]
            .......
            .......