是否有可能在IIS中定义一个虚拟目录,并以某种方式使该目录中的文件相对于物理目录而不是虚拟目录?
例如在我的服务器上,我有以下文件夹: D:\WebSite\Css\myTheme.css , D:\WebSite\Images\image1.jpg
我在IIS上创build了一个虚拟目录resources.mysite :在我的网站里面,我引用了这个表,像resources.mysite/myTheme.css
但是在myTheme.css里面我引用了../Images/images1.jpg图片。
所以问题是没有findimage1.jpg因为它是相对于物理文件夹而不是IIS上的虚拟文件夹。
我可以在不修改样式表的情况下解决这个问题吗?
解决这个问题的一个简单方法就是使用URL Rewrite( http://www.iis.net/download/URLRewrite )直接通过/myTheme.css公开/CSS/myTheme.css,这样当浏览器parsing它会正确parsing它们的相对URL。 所以,这应该工作,我还应该提到,IIS URL重写是EXTREMELY高性能和良好的内核caching和更多,不会影响任何性能。
所以换句话说就是安装URL Rewrite,并在你的网站的根目录下创build一个web.config文件,你应该很好。
<configuration> <system.webServer> <rewrite> <rules> <rule name="Expose Theme CSS" stopProcessing="true"> <match url="^myTheme.css" /> <action type="Rewrite" url="/CSS/myTheme.css" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
不可以。您不能使用../到达根文件夹(站点或虚拟目录,根据情况)的高级文件夹。
如果可以的话,这将是一个主要的安全问题。 人们可以做的事情,如http://yoursite.com/../../../../Windows/System32/Config/SYSTEM并开始下载您的registry,或SAM数据库或谁知道他们还有什么觉得有意思。