2012-05-24 96 views
1

我是新來的ISAPI_Rewrite &我很糟糕的正則表達式。我需要一個ISAPI_Rewrite的重寫規則,它將刪除子域並將其作爲參數傳遞。例如:通過子域名作爲參數

mysubdomain.mydomain.com 

應該成爲

mydomain.com/Landing.aspx?ID=mysubdomain 

發現似乎匹配除了www所有子正則表達式,但我不知道如何再傳給子域作爲參數如上例所示。

^((?:(?!www).)*) 

任何幫助,將不勝感激。

注意:我使用ISAPI_Rewrite的完整版本,因此此規則將位於站點級別。


全球規則:

# Helicon ISAPI_Rewrite configuration file 
# Version 3.1.0.89 

#Disable extentionless processing for ASP.Net v 4.0 
RewriteRule (.*)eurl.axd/.* $1 

# Don't rewrite urls that are inside the assets folder or have the following extentions 
RewriteRule ((^/Assets/.*)|(.*\.axd.*)|(.*\.asmx.*)|(.*\.png.*)) $1 [NC,L] 

#Rewrite URL, pass last portion of URL to Landing.aspx + purl 
RewriteRule (.*) $2/landing.aspx\?id=$1 [NC] 

回答

1

像這樣的事情可能會爲你工作:

# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{QUERY_STRING} ^$ 
RewriteCond %{HTTP_HOST} ([^.]+)(?<!^www)(\.|$) [NC] 
RewriteRule^Landing.aspx?ID=%1 [L,QSA] 

PS:貌似你的全球規則與我的上述規則衝突。因此,我建議你有你這樣的全球性規則,以避免衝突:以下

RewriteCond %{QUERY_STRING} ^$ 
RewriteCond %{HTTP_HOST} !mydomain\.com$ [NC] 
RewriteRule ^(.*)$ landing.aspx?id=$1 [L] 
0

嘗試使用:

RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP:Host} !^www\.mydomain\.com$ 
RewriteCond %{HTTP:Host} ^([^.]+)\.mydomain\.com$ 
RewriteRule ^$ /Landing.aspx?ID=%1 [NC,L] 

如果你想有一個301重定向或重寫你沒有指定,所以如果你想重定向,使用[NC,R = 301,L]代替[NC,L]。

+0

我只在查詢字符串中獲得'id = /'。 –

+0

這是什麼構建? – Andrew

+0

您可能想要在httpd.conf中添加以下幾行以啓用日誌記錄並查看請求處理方式:#enabling rewrite.log RewriteLogLevel 9 #enabling error.log LogLevel debug – Andrew