Regex Htaccess仅当查询参数存在时才将旧链接重定向到新链接

Regex Htaccess仅当查询参数存在时才将旧链接重定向到新链接,regex,apache,.htaccess,mod-rewrite,redirect,Regex,Apache,.htaccess,Mod Rewrite,Redirect,旧的目录结构正在被新的目录结构替换,/oldLms目录需要删除。然而,为了向后兼容,我们希望仍然保持这些旧链接处于活动状态,但是使用htaccess将它们重定向到新的区域。我有可能把一个.htaccess放在网站的根目录下 下面是一个“旧”链接示例: 还有一个新的: 基本上不同的是,旧的是由 /oldLms/index.php 而新的则由 /lms/index.php?r=site/sso 重定向期间需要保留所有其他查询参数 然而,有一个陷阱!我们只需要重定向具有auth\u regen=1

旧的目录结构正在被新的目录结构替换,/oldLms目录需要删除。然而,为了向后兼容,我们希望仍然保持这些旧链接处于活动状态,但是使用htaccess将它们重定向到新的区域。我有可能把一个.htaccess放在网站的根目录下

下面是一个“旧”链接示例:

还有一个新的:

基本上不同的是,旧的是由

/oldLms/index.php

而新的则由

/lms/index.php?r=site/sso

重定向期间需要保留所有其他查询参数


然而,有一个陷阱!我们只需要重定向具有
auth\u regen=1
参数的链接。其他人不应重定向。

您可以添加重写条件:

RewriteCond %{REQUEST_URI} ^/oldLms$
RewriteCond %{REQUEST_URI} auth_regen=1 # only if this occurs in the URI
RewriteRule /oldLms/.* /lms/$1

您需要以下规则作为root.htaccess中的第一条规则:

RewriteEngine On

RewriteCond %{QUERY_STRING} (^|&)auth_regen=1(&|$) [NC]
RewriteRule ^oldLms/(index\.php)$ /lms/$1?r=site/sso [L,NC,QSA,R=302]