通过 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
服务器变量包含请求的值Host
header(即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。
我喜欢重定向我的网站。
现在我有:
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
服务器变量包含请求的值Host
header(即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。