mod_rewrite:url重写加上子域(通配符)同时重写

时间:2010-01-30 06:43:14

标签: .htaccess mod-rewrite subdomain wildcard

我的.htaccess文件中有两个规则用于重写网址:

  1. 进行子域名重写:xxx.domain.com内部重定向到file.php?item=xxx

    RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
    
    RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com$ [NC]
    
    RewriteRule ^$ /file.php?item=%2 [QSA,nc]
    
  2. 普通改写:

    RewriteRule ^([A-Za-z0-9_)(:!-',]+)/?$ file.php?item=$1 [L] 
    
  3. 我需要实现的是编写第三条规则,将这两条规则结合起来而不与它们发生冲突。也就是说,在这些行的下方(或上方)我需要有类似的东西:

    RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com/([A-Za-z0-9_)(:!-',]+)$ [NC]
    
    RewriteRule ^$ /anotherfile.php?item1=%2&item2=$1 [QSA,nc]
    

    以便将http://xxx.domain.com/yyy重定向到anotherfile.php?item1 = xxx& item2 = yyy

    任何可行的想法,或者它的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

尝试此规则:

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([^.]+)\.example\.com$ [NC]
RewriteRule ^([A-Za-z0-9_)(:!-',]+)/?$ /file.php?item1=%2&item2=$1 [QSA]

它使用第一个规则的条件和第二个规则的URL路径模式。