我们需要一种说法
www.site.com/india www.site.com/asia www.site.com/usa 等...
但我们希望所有这些请求都指向www.site.com而不必为每种类型的网站物理创建文件和目录......所以如果我只是创建一个虚拟目录(www.site.com / india)并将其指向www.site.com ...然后我想我可以查看URL并相应地设置一些参数/文本/图像以填写模板......
这有意义吗?或者web.configs有问题吗?或者更好的方式
答案 0 :(得分:3)
我建议您考虑路由,如下所示:http://www.asp.net/mvc/tutorials/asp-net-mvc-routing-overview-cs
这里重复给定的样本,以便您(希望)能够看到相关性:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication1
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
}
通过类似的方法,您只需提取所需的信息
第一个示例是针对MVC路由,要进行webforms路由,你应该看看http://msdn.microsoft.com/en-us/library/cc668202(VS.90).aspx这里是一个(非常有限的)示例:
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add("BikeSaleRoute", new Route
(
"bikes/sale",
new CustomRouteHandler("~/Contoso/Products/Details.aspx")
));
}
使用他们在代码中构建的自定义路由处理程序。一旦你掌握了它,它就很容易使用。它们让你更具表现力。
答案 1 :(得分:2)
我认为您会发现,在没有使用不同的web.configs指向您的本地化文件的情况下,以五种方式本地化同一网站将很困难。
我要做的是让www.site.com的索引枯萎自动发现客户的位置或询问他们想要的网站版本。然后,将它们引用到该站点的虚拟目录下的default.aspx,该目录使用一组通用的自定义Web控件,根据该站点的web.config中引用的资源文件进行本地化。这样,您需要复制的只是站点骨架,它可以与index.aspx一样小。
如果该网站主要是aspxs,那么这也不会起作用。在这种情况下,我会像以前一样进行网站选择,但使用查询字符串来跟踪客户端位置,从而跟踪本地化。这应该仍然允许您调出正确的本地化设置。
答案 2 :(得分:1)
不,请保证我不要为世界上的每个国家/地区创建虚拟目录。结帐routing。这里有一些other examples。
答案 3 :(得分:1)
如果您尚未编写网站,请考虑使用路由甚至更好的MVC。你绝对不应该创建多个虚拟目录 - 维护
将是一场噩梦