.htaccess 重定向到子域名而不转发url中的查询字符串

8cdiaqws  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(91)

我试图从根域重定向到一个子域,如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]

但它没有任何效果。

idfiyjo8

idfiyjo81#

您可以在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测试此更改。

相关问题