2010-01-30 62 views
1

我在.htaccess文件中的兩個規則URL重寫改寫加上子域(通配符)改寫:的mod_rewrite:URL在同一時間

  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] 
    

我需要做的是編寫第三條規則,將這兩條規則結合起來而不與他們發生衝突。即,低於(或高於)該行i必須類似的東西:

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

任何想法,將工作,還是它的正確方法是什麼?

+0

爲了將來的參考,這種類型的問題更適合ServerFault(http://serverfault.com/)。由StackOverflow小組運行,它專門用於服務器和系統管理員。 – 2010-01-30 07:17:57

回答

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路徑模式的條件。