我认为本教程将对您有所帮助,甚至为您提供一些替代解决方案的赞成和反对意见。
http://www.seoconsultants.com/windows/isapi/subdomains/
引用链接教程:
设置 DNS 服务器
将以下条目添加到您的 DNS 服务器并相应地更改域和 IP 地址。
*.example.com 在 1.2.3.4 中
设置 Web 服务器
我们假设您已经为您的主站点创建了一个网站:www.example.com。因此,让我们仔细检查以确保它能够接受子域的所有变体。
打开 IIS 管理控制台并选择您的网站。右键单击它并选择属性。单击网站选项卡。单击高级按钮。确保在此网站的多个身份下有一个条目,其中主机标题名称字段为空白。此条目将拦截所有到达此 IP 地址的请求。确保 IP 地址仅供本网站使用。为 ISAPI_Rewrite 设置 httpd.ini
将以下代码添加到 Web 根目录中的 httpd.ini。确保它们的顺序正确。
# Convert http://example.com to http://www.example.com/
RewriteCond Host: ^example.com
RewriteRule (.*) http\://www\.example.com$1 [I,RP]
# Assuming we have limited number of shared folders.
# We will execute them accordingly regardless of the subdomain.
# Example: http://sub1.example.com/img/logo.jpg -> /img/logo.jpg
# Example: http://www.example.com/img/logo.jpg -> /img/logo.jpg
RewriteRule (/css/.*) $1 [I,O,L]
RewriteRule (/js/.*) $1 [I,O,L]
RewriteRule (/img/.*) $1 [I,O,L]
#Redirect all other subdirectories not matching
#to the list above as subdomains
#example: www.example.com\sub1 -> sub1.example.com
RewriteCond Host: www\.example\.com
RewriteRule /(\w*)/(.*) http\://$1\.example\.com$2 [I,RP]
# If the web site starts with www then point the file to the root folder
# If you specifically created a folder /www/ then you can comment out this section.
RewriteCond Host: (?:www\.)example.com
RewriteRule (.*) $1 [I,O,L]
# Any web site starts other than www will be re-mapped to /<subdomain>/
# Example: http://sub1.example.com/default.asp -> /sub1/default.asp
# Note: if the folder does not exists, then the user will get a 404 error automatically.
RewriteCond Host: (.*)\.example.com
RewriteRule (.*) /$1$2 [I,O,L]
#Fix missing slash char on folders
#This has to be at the end because if invalid dir exists,
#we should show 404 first
RewriteCond Host: (.*)
RewriteRule ([^.?]+[^.?/]) http\://$1$2/ [I,RP]
测试子域
假设我们创建了公司网站和两个子域:sub1、sub2。
服务器上的 URI 位置
http://www.example.com /
http://sub1.example.com/img/logo.jpg /img/logo.jpg
http://sub2.example.com /sub2/
http://abc.example.com /abc/ -> 404 Not Found
解决方案 2:总结
第二种解决方案更容易实现,只需要一个网站实例,用户必须小心创建文件夹。例如,用户不能创建文件夹 d:\inetpub\wwwroot\example.com\sub1\img\,因为它会与 (/img/.*) 的 ISAPI_Rewrite 规则冲突。因此,该文件夹中的文件将无法访问。