htaccess语言重定向查询参数

时间:2014-10-15 22:45:55

标签: apache .htaccess mod-rewrite url-rewriting url-redirection

我目前正在通过查找查询参数重定向到语言子网站。这有效,但我想添加对更多语言的支持。

当前工作代码:

RewriteCond %{REQUEST_URI} ^(.*)$ 
RewriteCond %{QUERY_STRING} ^ll=es$ [NC]
RewriteCond %{REQUEST_URI} !^(/es/)
RewriteRule (.*) https://domain.com/es/$1 [R=302,L,QSA]

我可以让它搜索任何其他语言,但是当它被重新插入规则时,我会陷入困境。

我想做的是这样的事情:

RewriteCond %{REQUEST_URI} ^(.*)$ 
RewriteCond %{QUERY_STRING} ^ll=(es|fr|de)$ [NC]
RewriteCond %{REQUEST_URI} !^(/$2/)
RewriteRule (.*) https://domain.com/$2/$1 [R=302,L,QSA]

1 个答案:

答案 0 :(得分:0)

对于RewriteCond中的反向引用匹配,您使用%N而非$N read more 。因此规则是:

RewriteCond %{QUERY_STRING} (?:^|&)ll=(es|fr|de)\b [NC]
RewriteCond %{REQUEST_URI} !^/%1/
RewriteRule ^(.*)$ https://domain.com/%1/$1 [R=302,L,QSA]

(?:)不会存储用于反向引用的匹配项。