处理链接和Image/CSS网址
当使用URL重写的时候需要注意的很重要的一个问题是,被重写后的页面中的相对链接、图片和CSS可能无法正常显示,因为相对参照将成为输入的URL而不时实际的URL。
举个例子来说,如果一个网站的主页是“/home.aspx?lang=en”,具有一个相对地址的“mysitelogo.jpg”,但是这个页面是被“/en/home.aspx”网址请求的,它具有一个“/en”目录来显示用户希望访问英文版的页面,“mysitelogo.jpg”的相对链接变成了“/en/mysitelogo.jpg”;这当然是不正确的,因此这个图像将不会正确的显示。
为了确保这个图像和链接指向正确的网址,请你指定一个绝对路径,例如“/mysitelogo.jpg”或者“www.mysite.com/mysitelogo.jpg”。另一个选择是在你的链接前使用“~/”,也就是说“~/mysitelogo.jpg”。这样它将自动展现你的文件或链接的正确路径。
修改文件扩展名
你可以对你的站点进行的另一个更有意思的修改是,修改你的页面的扩展名。例如,有的用户希望修改“.aspx”扩展名为特定的扩展名,诸如“.x”或“.mysite”,甚至是“.jsp”或“.php”。这样做有出于安全方面的考虑,也可以仅仅是为了增加你的网站的美观性。
要想修改你的网站页面的扩展名,只需使用上面的URL重写例子中的方法就可以,将包含“.mysite”的URL重写指向一个“.aspx”网址。如果你使用诸如URLRewriting.NET之类的模块的话,实现这个改变更是一件轻松的事情。只需要在重写规则的末尾加上一个重写规则,举个例子来说,重写“~/(.+).mysite”为“~/(.+).aspx”。因为URL重写规则是按顺序执行的,所以将这条规则放在最后会捕获所有页面。
还有需要注意的一点,当使用特定的文件扩展名的时候,确认要在IIS映射中配置这个新的扩展名。ASP.NET相关的扩展名(“.aspx”、“.asax”、“.config”、“.cs”等等)全部会被映射向aspnet_isapi.dll的ISAPI扩展。把你的新扩展名增加到相同的配置中。
