我是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]
答案 0 :(得分: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]
答案 1 :(得分: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]。