Htaccess使用文件夹重定向



我正在尝试创建一个具有大量重定向(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/

如果我交换订单,它是有效的。问题出在哪里?你有什么想法吗?

致以最良好的问候Rudi

mod_aliasRedirect指令是前缀匹配,匹配后的所有内容都复制到目标URL的末尾。因此,第一条规则匹配两个请求(第二条规则不起任何作用(,在请求/en/kontakt/132-start-page-en/gaesteinformation-en/的情况下,/en/kontakt/之后的所有内容都会附加到目标URL的末尾。

您需要:

  • 更改指令的顺序(根据您的建议(,使更具体的指令优先

OR,

  • 将指令更改为使用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/

最新更新