如何全部删除?URL中的源行代码,具有301重定向的重写规则



请帮助我为301重定向(子域blog.example.com下的.htaccess(为以下链接编写正确的RewriteRule

来自

https://blog.example.com/?source=tag_archive---------0-----------

重定向到

https://example.com/blog/

我在.htaccess:中使用这些行

RewriteEngine on
RewriteCond %{HTTP_HOST}  ^blog.example.com$ [NC]
RewriteCond %{QUERY_STRING}  ^source=tag_archive---------0-----------(&.*)?$ [NC]
RewriteRule ^(.*)$ https://example.com/blog/  [R=301,NE,NC,L]

通过上面的例子,我得到了

https://example.com/blog/?source=tag_archive---------0-----------

但需要

https://example.com/blog/

(无部件?source=tag_archive---------0-----------(

在Apache 2.4+上,您需要将QSD(查询字符串丢弃(标志添加到RewriteRule指令中:

RewriteRule ^ https://domainname.com/blog/  [QSD,R=301,L]

(或者,如果您仍在Apache 2.2上,则在替换字符串的末尾附加一个?,这实际上是一个空的查询字符串。?本身将不在重定向响应中。(

^(.*)$(RewriteRule模式(-由于您匹配任何URL路径,并且不使用反向引用,因此可以简化为^

这里不需要NCNE标志。

但是,如上所述,这会重定向任何URL路径。如果您特别希望仅重定向https://blog.example.com/?source=tag...,则将RewriteRule模式更改为^$(空URL路径(。例如:

RewriteRule ^$ https://domainname.com/blog/  [QSD,R=301,L]

最新更新