.htaccess - 重写规则中匹配的Env变量

时间:2014-01-07 15:15:02

标签: regex apache .htaccess mod-rewrite

我正试图通过url根据检测到的语言匹配以下htaccess中的“博客”和“新闻”字样。

网址:

http://localhost/es/noticias

语言检测(工作):

RewriteCond %{HTTP_HOST} ^(es)\. [OR]
RewriteCond %{REQUEST_URI} .*/(es)/.*
RewriteRule ^(.*) - [E=LANG:%1,E=NEWS:noticias,E=BLOGS:blogs]

规则(不匹配ENV:BLOGS或ENV:NEWS)

RewriteRule ^([^\/]+/)?(%{ENV:BLOGS}|%{ENV:NEWS}) index.php?vd=%{ENV:LANG}/$1&m=$2 [NC,QSA,L]

如何在Rewrite Rule匹配Env变量

编辑1 - 扩展语言翻译

RewriteCond %{HTTP_HOST} ^(es)\. [OR]
RewriteCond %{REQUEST_URI} .*/(es)/.*
RewriteRule ^(.*) - [E=LANG:%1,E=NEWS:noticias,E=BLOGS:blogs]

RewriteCond %{HTTP_HOST} ^(en)\. [OR]
RewriteCond %{REQUEST_URI} .*/(en)/.*
RewriteRule ^(.*) - [E=LANG:%1,E=NEWS:news,E=BLOGS:blogs]

RewriteCond %{HTTP_HOST} ^(fr)\. [OR]
RewriteCond %{REQUEST_URI} .*/(fr)/.*
RewriteRule ^(.*) - [E=LANG:%1,E=NEWS:nouvelles,E=BLOGS:blogosphere]

1 个答案:

答案 0 :(得分:1)

而不是RewriteRule您需要使用RewriteCond来匹配env变量。请参阅此代码段:

RewriteCond %{ENV:BLOGS} ^blogs$ [OR]
RewriteCond %{ENV:NEWS} ^noticias$
# some RewriteRule here
RewriteRule ^ - [L]
另一方面,

RewriteRule仅用于匹配请求URI。