.htaccess将带有查询参数的特定不存在文件重定向到新url

.htaccess将带有查询参数的特定不存在文件重定向到新url,.htaccess,redirect,url-redirection,.htaccess,Redirect,Url Redirection,我有一个自己的域,它有url结构的url https://www.olddomain.com/filename.php?cat=12 https://www.olddomain.com/filename.php?cat=12&id=1212122 https://www.olddomain.com/filename.php?cat=15 https://www.olddomain.com/filename.php?cat=15&id=121423 它有一个或两个查询参数。现在我

我有一个自己的域,它有url结构的url

https://www.olddomain.com/filename.php?cat=12
https://www.olddomain.com/filename.php?cat=12&id=1212122
https://www.olddomain.com/filename.php?cat=15
https://www.olddomain.com/filename.php?cat=15&id=121423
它有一个或两个查询参数。现在我想让它重定向到一个新的域,但是有一个不同的url结构,就像这样

https://www.olddomain.com/filename.php?cat=12 -> https://www.newdomain.com/newurl_1/
https://www.olddomain.com/filename.php?cat=12&id=1212122 -> https://www.newdomain.com/newurl_1/
https://www.olddomain.com/filename.php?cat=15 -> https://www.newdomain.com/newurl_2/
https://www.olddomain.com/filename.php?cat=15&id=121423 -> https://www.newdomain.com/newurl_2/
它应该根据“cat”查询参数重定向到特定的url。“id”或“cat”后面的任何其他查询参数都是不相关的

这是我到目前为止所做的

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_URI} ^/filename.php [NC]
  RewriteCond %{QUERY_STRING} ^cat=12(.*) [NC]
  RewriteRule . /newurl_1/ [L,NC,R=301]
</IfModule>
  • 是否可以从新url中删除其他查询参数
  • 如何为多个不同的“cat”查询参数扩展.htaccess

  • 对于1 Yes,您需要在规则末尾添加一个

    RewriteRule . /newurl_1/? [L,NC,R=301]
    
    由于查询字符串是自动追加的,但带有
    ,因此除非使用
    QSA
    标志,否则不会追加查询字符串

    对于2,您需要为每个cat参数编写一个规则。您可以这样做,也可以考虑使用
    重写映射
    (在htaccess文件中不起作用)。如果要全部枚举,可能需要调整其中一个条件,使其如下所示:

    RewriteCond %{QUERY_STRING} ^cat=12($|&) [NC]
    

    因此,它与12匹配,而不是与1234

    匹配。对于1是,您需要在规则末尾添加

    RewriteRule . /newurl_1/? [L,NC,R=301]
    
    由于查询字符串是自动追加的,但带有
    ,因此除非使用
    QSA
    标志,否则不会追加查询字符串

    对于2,您需要为每个cat参数编写一个规则。您可以这样做,也可以考虑使用
    重写映射
    (在htaccess文件中不起作用)。如果要全部枚举,可能需要调整其中一个条件,使其如下所示:

    RewriteCond %{QUERY_STRING} ^cat=12($|&) [NC]
    

    这样它就匹配了12,而不是像1234

    谢谢。第一个问题是可行的。至于第二个问题,我做不到。谢谢你给我指出了正确的方向。我也能解决问题2。谢谢,谢谢。第一个问题是可行的。至于第二个问题,我做不到。谢谢你给我指出了正确的方向。我也能解决问题2。非常感谢。