我有:
仅当新域是md5时,我才希望将其转移到新域,并将此变量保留为get md5 = https://new.example.com/login?md5={md5}
我有以下规则
RewriteRule ^[a-f0-9]{32}$ https://new.example.com/login$1 [R=301,L]
它工作一半,如果链在md5上,它可以很好地重定向,但不保留md5的值。我想它缺少(.*)
。
我必须保留所有其他没有md5的页面
https://new.example.com/contact.html
https://new.example.com/bablac/blibli.html
发布于 2020-07-14 20:41:55
RewriteRule ^a-f0-9{32}$ https://new.example.com/login$1 R=301,L
更新:你实际上并没有捕获任何东西,所以$1
的反向引用总是空的。您需要在RewriteRule
模式中创建一个捕获组(即,用圆括号括起来)或使用包含整个匹配的$0
反向引用。
您还将重定向到/login{md5}
,而您声明需要重定向到/login?md5={md5}
(以“将此md5作为get变量”),因此您需要调整规则的最后一部分以读取/login?md5=$1
。换句话说:
RewriteRule ^[a-f0-9]{32}$ https://new.example.com/login?md5=$0 [R=301,L]
您需要清除浏览器缓存,因为301 (永久)重定向将由浏览器缓存。
我假设旧域和新域指向不同的服务器,否则,您可能需要一个显式检查所请求主机名的条件。例如:
RewriteCond %{HTTP_HOST} ^old\.example\.com [NC]
RewriteRule ^[a-f0-9]{32}$ https://new.example.com/login?md5=$0 [R=301,L]
https://stackoverflow.com/questions/62893826
复制相似问题