【问题标题】:mod_rewrite entire website to front page ONLY of new websitemod_rewrite 整个网站只在新网站的首页
【发布时间】:2018-07-23 21:07:05
【问题描述】:

现在我已经编写了几十个重定向,有些使用棘手的正则表达式,有些更温和,但今天,最简单的重定向是在运行 Apache 2.2.3 的 CentOS 服务器上难倒我。

我想做的就是将旧域上的每个请求(无论路径和查询字符串如何)重定向到新站点的首页 .这就是为什么,例如,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 上已经有很多这样的答案了:

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

【问题讨论】:

  • 我发现的唯一区别是 RewriteRule ^$ https://NEW_DOMAIN 中缺少尾随 /。也许你可以试试RewriteRule ^$ https://NEW_DOMAIN/
  • 恐怕我已经尝试过了,但遗憾的是没有效果......不过还是谢谢你!
  • 您是否清除了浏览器历史记录,只是为了确保您没有被浏览器缓存欺骗? (一些浏览器缓存重定向真的很顽固,所以如果你之前用不同的 htaccess 设置测试过这个,它确实故意包含了路径,这可能是原因。)
  • 谢谢,但我尝试了不同的浏览器,甚至完全不同的设备——我从来没有将它配置为包含路径。虽然这种顽强的缓存在过去常常是我问题的根源,但这次不是。不过谢谢!

标签: apache mod-rewrite


【解决方案1】:

RewriteRule ^(.*)$ https://NEW_DOMAIN [R=301,NC,L] 应该可以工作。我已经用各种 URL 进行了测试,它总是重定向到 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]
            .......
            .......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    相关资源
    最近更新 更多