2010-02-09 139 views
3

我想使用的子域作为GET变量,mod_rewrite的,并使用一些参数:mod_rewrite的与子域名和URL模式

/page/language/site/counter - >index.php?o=operator&lg=language&s=arg1&c=arg2

如何做到这一点与mod_rewrite的?

RewriteEngine On 

RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] 
RewriteCond %{HTTP_HOST} ^([a-zA-Z]{3,6})\.example\.com 
RewriteRule ^index/([a-z]{2})/([0-9]{1,2})/([0-9]{1,2})$ http://www.example.com/index.php?o=%1&lg=%2&site=%3&counter=%4 [NC,L] # for index.php 
RewriteRule ^export/([a-z]{2})/([0-9]{1,2})/([0-9]{1,2})$ http://www.example.com/export.php?o=%1&lg=%2&site=%3&counter=%4 [NC,L] # for export.php 

任何想法?

在此先感谢

回答

0

一个RewriteCond也只属于直接跟随RewriteRule。因此,在您的情况下,两个RewriteCond指令都只属于第一个RewriteRule指令,而第二个RewriteRule没有关联的RewriteCond指令。

您可以通过合并两个RewriteRule在你的例子解决这个问题:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^([a-zA-Z]{3,6})\.example\.com$ 
RewriteRule ^(index|export)/([a-z]{2})/([0-9]{1,2})/([0-9]{1,2})$ http://www.example.com/$1.php?o=%1&lg=$2&site=$3&counter=$4 [NC,L] 

还要注意的$n的使用,而不是%n$nRewriteRule的同时,第n个组的比赛%n是指最后一次成功的RewriteCond的第n组的匹配。