2012-07-08 31 views
0

我有一個外卡虛擬主機,我配合以下條件:mod_rewrite的使用子沒有正確捕捉模式

RewriteCond %{HTTP_HOST} ^([a-z0-9_\-]+)\.([\d]+)\.mydomain\.com [NC] 

此規則適用:

RewriteRule ^/?$  /index.php?customer=%1&cluster=%2&%{QUERY_STRING} [L] 

但是,如果我嘗試該模式在所有複雜:

RewriteRule ^([\w\-]+)/?$ /index.php?customer=%1&cluster=%2&load=$1&%{QUERY_STRING} [L] 

它沒有抓住它。我錯過了什麼?

通過上面的規則: http://dev.0.mydomain.com:8080/作品與第一條規則 http://dev.0.mydomain.com:8080/x/第二規則失敗(即修改第一條規則,只有一個規則)

回答

0

你的第二個規則不包括前面的斜線。假設你的規則在虛擬環境中,那部分是需要的。具體來說,^([\w\-]+)不符合/anything。這將是:^/([\w\-]+)

+0

哦,哇,你是對的!我沒有考慮^ /因爲在舊代碼前的子域我們沒有/那裏,它工作得很好。它也不在舊代碼的虛擬環境中。有多混亂!謝謝! – 2012-07-08 23:22:33

+0

另外,^ /([\ w \ - ] +)假設它匹配的是什麼? \ w內的字符類只是一個字面w。爲什麼不把它輸入爲w? – 2012-07-08 23:25:01

+0

它不是一個字面的w,它匹配A-Z,a-z,0-9。 – 2012-07-08 23:26:19