因为这个需求的确很复杂,上面这些例子有可能还不能完全覆盖你的所有情况,你先试试吧,上面这三种是都满足了
<script language=javascript>
var str='http://test.abc.com/List.aspx?Pages=3';
var str="http://test.abc.com";
var str="http://www.test.abc1.com/List.aspx?Pages=3"
re=/^(http:\/\/)(www.)?([^\.]+)(\.[^\/]+)((\/)([^\?]+)(\?)?(.*))?$/
alert(str.replace(
re,function(a,b,c,d,e,f,g,h,i,j){
if(!f)
{
return b+"www"+e+"?User="+d
}
return b+"www"+e+g+h+i+j+((i)?'&User=':'?User=')+d
}
)
)
</script>
<script language=javascript>
var str='http://test.abc.com/List.aspx?Pages=3';
var str="http://test.abc.com";
var str="http://www.test.abc1.com/List.aspx?Pages=3"
re=/^(http:\/\/)(www.)?([^\.]+)(\.[^\/]+)((\/)([^\?]+)(\?)?(.*))?$/
alert(str.replace(
re,function(a,b,c,d,e,f,g,h,i,j){
if(!f)
{
return b+"www"+e+"?User="+d
}
return b+"www"+e+g+h+i+j+((i)?'&User=':'?User=')+d
}
)
)
</script>
str.replace(re,"http://www.$2.com/?$3&User=$1");
var s = "http://www.test.abc.com/List.aspx?Pages=3";// (注意,这种格式也是存在的)
//http://www.abc.com/List.aspx?Pages=3&User=testvar r = /^https?:\/\/(www\.)?(\w+)\.abc\.com\/([^\?]+)(\?(.+))?$/i;
s = s.replace(r, "http://www.abc.com/$3?User=$2&$5");
alert(s)
</SCRIPT>
var s = "http://www.test.abc.com/List.aspx?Pages=3";// (注意,这种格式也是存在的)
//http://www.abc.com/List.aspx?Pages=3&User=testvar r = /^https?:\/\/(www\.)?([^\.]+)\.abc\.com\/([^\?]+)(\?(.+))?$/i;
s = s.replace(r, "http://www.abc.com/$3?User=$2&$5");
alert(s)
</SCRIPT>
<script language=javascript>
var str='http://test.abc.com/List.aspx?Pages=3';
//var str="http://test.abc.com";
//var str="http://www.test.abc1.com/List.aspx?Pages=3"
re=/\/\/(www.)?([^\.]+)\./
re.test(str)
var userName=RegExp.$2
str=str.replace(re,"\/\/www.")
alert(str+((str.indexOf("?")==-1)?"?User=":"&User=")+userName)
</script>
<RewriterRule>
<LookFor>友好URL</LookFor>
<SendTo>实际URL</SendTo>
</RewriterRule>
-----------------------------------------------------
感谢几位的解答,但是我始终无法将各位的代码转移进 web.config 里。
现在请大家帮忙实现成这样。【友好URL】:无下划线“_”同时不包括“/index.aspx”字符
【实际URL】:解析的规则如下