这是web.config url-rewrite:
<clear /> <rule name="Reverse Proxy to Community" stopProcessing="true"> <match url="^community/qa/(.*)" /> <action type="Rewrite" url="http://xxx.xxx.xxx.xxx/{R:1}" logRewrittenUrl="true" /> </rule>
ip地址指向带有apache和django站点的联网linux盒子.
我想要的是
所有请求/ community / qa / *都被重定向到指定的内部IP.
怎么了
/ community / qa / – 给出404(在主IIS服务器上)
/ community / qa / questions / – 给出404(在主IIS服务器上)
– 但 –
/ community / qa / questions / ask / Works !!!
/ community / qa / questions / unanswered / Works !!
所以它似乎适用于从起点开始的2个子目录的所有URL.
这对我来说似乎很奇怪,我无法弄明白.
在此先感谢您的帮助.
解决方法
routes.MapRoute( "Default",// Route name "{controller}/{action}/{id}",// URL with parameters new { controller = "Home",action = "Index",id = UrlParameter.Optional } // Parameter defaults );
在你的情况下/ community / qa /和/ community / qa / questions /不起作用,因为它会匹配给定的Url模式,并且会被解释为:
/ community / qa / —> Controller =“community”,Action =“qa”
/ community / qa / questions / —> Controller =“community”,Action =“qa”,参数:Id =“questions”
如果你没有这样的控制器和动作,你将得到Http 404 Not Found.
/ community / qa / questions / ask /和/ community / qa / questions / unanswered /会起作用,因为它们与您系统中的任何UrlRouting模式都不匹配.
如此简单的解决方案是添加您的UrlRouting配置(当Web应用程序启动时)忽略您的网址规则:
routes.IgnoreRoute("community/qa/{*pathInfo}");