.htaccess htaccess仅通过匹配url的第一部分来重写url

.htaccess htaccess仅通过匹配url的第一部分来重写url,.htaccess,redirect,.htaccess,Redirect,我一直在努力寻找解决这个非常简单问题的方法。你可能会认为这是典型的“请帮助我,我需要将此url重定向到新url”类型的事情,但是,相信我,这并不是那么容易 我有一个域example.com,这个example.com有一些语言变体: example.com/mx example.com/us example.com/ca example.com/cl example.com/xx 以此类推 .com是一个可以在国家之间选择的索引,它也存在,但没有内容 我们最近将example.com/mx移

我一直在努力寻找解决这个非常简单问题的方法。你可能会认为这是典型的“请帮助我,我需要将此url重定向到新url”类型的事情,但是,相信我,这并不是那么容易

我有一个域example.com,这个example.com有一些语言变体:

example.com/mx
example.com/us
example.com/ca
example.com/cl 
example.com/xx
以此类推 .com是一个可以在国家之间选择的索引,它也存在,但没有内容

我们最近将example.com/mx移动到一个全新的域(使用不同的系统)example.com.mx,因此我们继续将那里的每个url永久重定向到example.com.mx中的新url

当我们在example.com上安装多语言wordpress时,我们发现它复制了根文件中的所有网站内容,这是不应该发生的

所以,我们喜欢

example.com/us/folder
example.com/cl/folder
example.com/ca/folder
etc

那里有大量重复的目录,我们已经知道在哪里重定向这些目录,但我们就是找不到正确的代码行

例如,我们设置了这个htaccess规则来处理所有/mx/文件夹,它运行良好:

RewriteRule ^mx/shop/ https://www.example.com.mx/? [L,R=301]
RewriteRule ^mx/home/ https://www.example.com.mx/? [L,R=301]
RewriteRule ^mx/page/ https://www.example.com.mx/? [L,R=301]
RewriteRule ^mx/tag/ https://www.example.com.mx/? [L,R=301]
但是,当尝试将相同的逻辑扩展到“/shop/”目录时,它与每个国家/地区文件夹中的相同目录相匹配,这显然是我们不想要的

这是我们尝试过的,如前所述:

RewriteRule ^/tag/ https://www.example.com.mx/newtagurl? [L,R=301]
这显然也会重定向example.com/ca/tag/,因为^

所以我的问题是,如何正确地重定向到这些只匹配开始字符串的案例,而不是匹配每个国家/地区文件夹中的每个/tag/case


谢谢

在.htaccess中配置时,
RewriteRule^/tag/
不应影响任何内容-因为在该点上,前导斜杠已被去掉,因此任何以
^/
开头的模式都不会匹配
RewriteRule^tag/
将匹配任何以
tag/
开头的请求URL。“这显然也会重定向example.com/ca/tag/,因为^。”-不,这是对正在发生的事情的完全错误的解释
^
将模式锚定在开始处,因此这将仅匹配以
/tag/
开头的路径-这永远不会匹配
/ca/tag/
重写规则^/tag/
在.htaccess中配置时不应影响任何内容-因为在该点上已去掉前导斜杠,因此,任何以
^/
开头的模式都不会匹配
RewriteRule^tag/
将匹配任何以
tag/
开头的请求URL。“这显然也会重定向example.com/ca/tag/,因为^。”-不,这是对正在发生的事情的完全错误的解释
^
将模式锚定在开头,因此这将只匹配以
/tag/
开头的路径-这永远不会匹配
/ca/tag/
RewriteRule ^/tag/ https://www.example.com.mx/newtagurl? [L,R=301]