.htaccess将带有查询参数的特定不存在文件重定向到新url
我有一个自己的域,它有url结构的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 它有一个或两个查询参数。现在我
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>
对于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。非常感谢。