Apache 使用子域和url模式重写mod_

Apache 使用子域和url模式重写mod_,apache,mod-rewrite,apache-config,Apache,Mod Rewrite,Apache Config,我想将子域用作mod_rewrite的get变量,并使用一些参数: 例如/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})\.exam

我想将子域用作mod_rewrite的get变量,并使用一些参数:

例如
/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
有什么想法吗


提前感谢

A
RewriteCond
只属于直接遵循的
RewriteRule
。因此,在您的情况下,两个
RewriteCond
指令只属于第一个
RewriteRule
指令,第二个
RewriteRule
指令没有关联的
RewriteCond
指令

在示例中,您可以通过合并两个
重写规则来解决此问题:

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
,因为
$n
指的是
重写规则的第n组的匹配,而
%n
指的是上一次成功的
重写条件的第n组的匹配