请帮助我为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路径,并且不使用反向引用,因此可以简化为^
。
这里不需要NC
和NE
标志。
但是,如上所述,这会重定向任何URL路径。如果您特别希望仅重定向https://blog.example.com/?source=tag...
,则将RewriteRule
模式更改为^$
(空URL路径(。例如:
RewriteRule ^$ https://domainname.com/blog/ [QSD,R=301,L]