.htaccess重定向具有源和目标URL中的查询参数的URL的语法

时间:2017-09-27 15:15:37

标签: apache .htaccess redirect mod-rewrite

我有一个完美运行的IIS重定向规则。我一直试图将其转换为.htaccess格式,以便在实时网络主机上使用,但收效甚微。

规则的目的是重定向对URL的任何访问

http://my.web.host/user/username/?profiletab=main

到网址

http://my.web.host/network/?user=username

规则的IIS web.config格式如下:

<rule name="bounce" patternSyntax="ECMAScript" stopProcessing="true">
    <match url="^user/(.*)/$" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
       <add input="{QUERY_STRING}" pattern="profiletab=main" />
       <add input="{QUERY_STRING}" pattern="um_action" negate="true" />
    </conditions>
    <action type="Redirect" url="/network/?user={R:1}" appendQueryString="false" redirectType="Found" />
</rule>

到目前为止,我所尝试过的是规则的变化

Redirect 301 /user/(.*)/?profiletab=main /network/?user=$1

以及

RewriteCond %{THE_REQUEST} ^user/(.*)/\?profiletab=main$ [NC]
RewriteRule network/?user=%1 [R=302,L]

两者都没有奏效。因此,我非常感谢您对实现上述重定向所需的语法提供一些帮助。 (我希望我至少接近!)

提前谢谢,伙计们!

1 个答案:

答案 0 :(得分:1)

您可以将此规则用作.htaccess中的第一条规则:

RewriteEngibe On

RewriteCond %{QUERY_STRING} (?:^|&)profiletab= [NC]
RewriteRule ^user/([\w-]+)/?$ /network/?user=$1 [QSA,R=301,L]