3

我想将子域用作带有 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

任何想法?

提前致谢

4

1 回答 1

0

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

您可以通过合并两个RewriteRules 在您的示例中解决此问题:

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还要注意,而不是%nas的用法是$n指第 n 组的匹配RewriteRulewhile%n是指最后一次成功的第 n 组的匹配RewriteCond

于 2010-07-17T11:05:02.043 回答