【问题标题】:Htaccess redirect with foldersHtaccess 使用文件夹重定向
【发布时间】:2021-08-03 06:23:39
【问题描述】:

我正在尝试创建一个包含大量重定向 (301) 的列表,并且不想手动更改顺序。不幸的是,某些 301 重定向并没有真正起作用:

RewriteEngine on

Redirect 301 "/en/kontakt/" https://www.example.com/kontakt/ 
Redirect 301 "/en/kontakt/132-start-page-en/gaesteinformation-en/" https://www.example.com/kontakt/'''

第一个重定向有效,第二个给出 404。

200,https://,www.example.com/kontakt/
404,https://,www.example.com/kontakt/132-startseite-de/gaesteinformation-de/

如果我交换订单,它会起作用。问题是什么?你有什么想法吗?

最好的问候 鲁迪

【问题讨论】:

    标签: .htaccess redirect mod-rewrite http-status-code-301


    【解决方案1】:

    mod_alias Redirect 指令是前缀匹配的,匹配后的所有内容都被复制到目标 URL 的末尾。因此,您的第一个规则匹配两个请求(第二个规则不执行任何操作),对于/en/kontakt/132-start-page-en/gaesteinformation-en/ 的请求,/en/kontakt/ 之后的所有内容都附加到目标 URL 的末尾。

    您需要:

    • 更改指令的顺序(按照您的建议),以便更具体的指令在前。

    或,

    • 将指令改为使用RedirectMatch,它与正则表达式匹配,而不是简单的前缀匹配。

    例如:

    RedirectMatch 301 ^/en/kontakt/$ https://www.example.com/kontakt/ 
    RedirectMatch 301 ^/en/kontakt/132-start-page-en/gaesteinformation-en/$ https://www.example.com/kontakt/
    

    可以组合成一个指令:

    RedirectMatch 301 ^/en/kontakt/(132-start-page-en/gaesteinformation-en/)?$ https://www.example.com/kontakt/
    

    【讨论】:

      猜你喜欢
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多