晚上,
我的任务是将网站从subdomain.domain.com移至domain.com/subdomain。
我遇到的问题:
原始子域名和域名都有网址重写规则(asp.net,UrlReWriter)
所以,我已将子域内容文件移动(或者更确切地说,复制)到主域下的新子文件夹,事情似乎进展顺利但有一两个问题...
我需要匹配以下内容:
http://www.maindomain.com/category.aspx?name=foo - > http://www.maindomain.com/foo/ http://www.maindomain.com/viewproduct.aspx?catName=foo&productName=bar - > http://www.maindomains.com/foo/bar.aspx
我已经有点工作但是,由于配置文件继承,我必须在主应用程序(主域)web.config中指定重写规则,所以我还需要匹配这些规则:
http://www.maindomain.com/us/category.aspx?name=foo - > http://www.maindomain.com/us/foo/ http://www.maindomain.com/us/viewproduct.aspx?catName=foo&productName=bar - > http://www.maindomain.com/us/foo/bar.aspx
显然,重写引擎需要忽略css / images等其他文件,包括例如:
http://www.maindomain.com/about.aspx& http://www.maindomain.com/us/about.aspx
需要任何其他信息,只需询问..
我现在的规则是:
<rewrite url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.pdf|\.css|\.js)(\?.+)?)$" to="$1" processing="stop"/>
<rewrite url="^/us/.+(\.gif|\.png|\.jpg|\.ico|\.pdf|\.css|\.js)(\?.+)?$" to="$1" processing="stop"/>
<rewrite url="^/us/Error.aspx" to="$1" processing="stop"/>
<rewrite url="^/us/Error404.aspx" to="$1" processing="stop"/>
<rewrite url="Error.aspx" to="$1" processing="stop"/>
<rewrite url="Error404.aspx" to="$1" processing="stop"/>
<rewrite url="^/us/$" to="$1" processing="stop"/>
<rewrite url="^/us/(.+)/(.+).aspx" to="/us/viewProduct.aspx?productName=$2&catName=$1" processing="stop"/>
<rewrite url="^/us/(.+)/" to="/us/category.aspx?name=$1" processing="stop"/>
<rewrite url="^/(.+)/(.+).aspx" to="~/viewProduct.aspx?productName=$2&catName=$1" processing="stop"/>
<rewrite url="^/(.+)/" to="~/category.aspx?name=$1" processing="stop"/>
使用,iis7.5,c#,asp.net v2 谢谢 迈克尔
答案 0 :(得分:0)
这里有一些问题。第一个是以下重写规则不起作用:
<rewrite url="^/us/$" to="$1" processing="stop"/>
您要求重写模块将匹配组1替换为网址/us/
,但您的捕获表达式中没有组。要解决此问题,并处理tha /us/
文件夹中的.aspx文件,请将其替换为以下两条规则:
<rewrite url="^/us/$" to="/us/default.aspx" processing="stop"/>
<rewrite url="^(/us/[^/]+\.aspx)$" to="$1" processing="stop"/>
此外,您不需要第二次重写规则(对于/us/
文件夹中的静态内容),因为第一次重写规则不关心文件所在的文件夹,并且会匹配(并停止处理)/us/images/foo.jpg
等网址。