通过 htaccess 重定向并删除 link 的一部分

Redirect via htaccess and remove part of link

我喜欢重定向我的网站。

现在我有:

https://www.old.example/NL/page

它必须变成

https://www.new.example/page

我知道我可以使用

更改域

通常我会使用这样的东西,但这只会改变域:

 RewriteCond %{HTTP_HOST} ^old.example/NL$ [OR]
  RewriteCond %{HTTP_HOST} ^www.old.example/NL/$
  RewriteRule (.*)$ https://www.new.example/ [R=301,L]

所以现在我在想这样的事情:

 RewriteRule %{HTTP_HOST} ^old.example/(NL)/([A-Za-z0-9_-]*)$ http://www.new.example/&%{QUERY_STRING} [R=301,L]

但这给出了以下结果: http://www.new.example/NL/page

谁能帮我找到正确的解决方案?

HTTP_HOST服务器变量包含请求的值Hostheader(即hostname),这个不包含URL-path,所以你的两个规则都不会做任何事情(事实上,第二个规则是完全无效的)。

您可以改为执行以下操作:

RewriteCond %{HTTP_HOST} ^(www\.)?old\.example [NC]
RewriteRule ^NL/(.*) https://www.new.example/ [R=301,L]

所有 HTTP_<NAME> 形式的 Apache 服务器变量都引用相应 <NAME> 的 HTTP 请求 header。