mod_rewrite匹配第一个和最后一个路径段并替换最后一个

时间:2012-07-04 20:19:05

标签: regex mod-rewrite

我正在尝试为我的.htaccess文件编写规则,检查第一个路径段的匹配项,检查最后一个段!= en,然后替换最后一个段。

e.g。

转换

/ ZH /东西/ somethingelse / DE /

/ ZH /东西/ somethingelse / EN /

如果最后一个段已经/ en /,则不需要应用规则。 在第一个和最后一个之间可以有更多或更少的路径段。

我现在正在尝试这个

RewriteRule /zh.*/([^/]+)/(?!^en$).*$ /zh/$1/en/   [R=301,L] 

但它正在给我

/ zh / en / en /

结果

1 个答案:

答案 0 :(得分:0)

可能更改正则表达式并添加条件以防止/en/上的循环:

RewriteCond %{REQUEST_URI} !/en/?$
RewriteRule ^/zh[^\/]*/(.*)/[a-z]{2}/?$ /zh/$1/en/ [R=301,L]

注意:如果在.htaccess文件中使用此文件并且您使用的是apache 2.0+,则需要删除从^/zh^zh的前导斜杠。