重定向到子域,不转发url中的查询字符串



我试图从根域重定向到子域,如example.com和www.example.com重定向到blog.example.com。我想保留路径,但删除查询字符串。为例。example.com/abc-def/(包括www和非www版本)重定向到blog.example.com/abc-def/。但是,example.com/abc-def/?p=219必须重定向到blog.example.com/abc-def/

我的意思是我想把整个域转发到子域,但url中的查询字符串不需要转发。只保留url路径,并删除url末尾的任何查询字符串。我必须在。htaccess文件中添加什么规则来实现这一点?请让我知道。

我找不到正确的规则。请帮我设置正确的重定向。如果我尝试删除查询字符串,它只会重定向到主页。下面是我从。htaccess文件中尝试的重定向规则:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^/?$ https://blog.example.com/ [R=301,L]

但是没有任何效果。

您可以在example.com的站点root .htaccess中使用此重定向规则:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ [NC]
RewriteRule ^ https://blog.example.com%{REQUEST_URI}? [R=301,L,NE]

注意,目标中的%{REQUEST_URI}将保留与目标中的原始URL相同的URI路径,但是?之后将丢弃任何先前存在的查询字符串。

请确保在新浏览器中或通过命令行curl测试此更改。

最新更新