【问题标题】:301 Redirect Not Working - Appending Path301 重定向不起作用 - 附加路径
【发布时间】:2015-10-30 20:10:23
【问题描述】:

有人能告诉我为什么以下方法不起作用吗?

Redirect 301 /foo/bar/test/ https://www.example.com

它重定向到https://www.example.com/bar/test/(注意/foo/ 已被删除?)而不是简单的https://www.example.com

【问题讨论】:

    标签: apache .htaccess redirect http-status-code-301


    【解决方案1】:

    Redirect 301 /foo/bar/test/ https://www.example.com

    我认为您看到的是缓存响应,因为上述指令无法产生所述结果。

    但是,由于您只想重定向到根域,Redirect 不是该作业的正确指令。 Redirect 是前缀匹配,匹配后会将路径段复制到目标 URL 上。

    因此,例如,鉴于上述指令和对/foo/bar/test/baz 的请求,您将被重定向到https://www.example.combaz/ - 请注意 URL 上的附加 baz/(以及域名后缺少的斜杠 - 即另一个问题,由 URL 路径 /foo/bar/test/ 上的斜杠引起。如果您需要斜杠,那么您还需要将斜杠添加到目标。

    试试RedirectMatch insead:

    RedirectMatch 302 ^/foo/bar/test/$ https://www.example.com
    

    当您对它工作正常感到满意时,将 302 更改为 301。 (301 重定向被浏览器缓存,所以测试很麻烦。)

    RedirectMatch 使用正则表达式而不是简单的前缀匹配。参考:http://httpd.apache.org/docs/2.4/mod/mod_alias.html#redirectmatch

    【讨论】:

      【解决方案2】:

      尝试只使用“foo/bar/test/”而不是“/foo/bar/test/”

      【讨论】:

      • 在 mod_alias Redirect 中,URL 路径是以斜杠开头的路径(相对于根),因此删除斜杠不会有帮助。
      猜你喜欢
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-31
      • 2013-06-05
      • 2013-11-27
      • 2014-04-30
      相关资源
      最近更新 更多