虚拟目录中文件的IIS重写规则检查

虚拟目录中文件的IIS重写规则检查,iis,url-rewriting,coldfusion,iis-7.5,virtual-directory,Iis,Url Rewriting,Coldfusion,Iis 7.5,Virtual Directory,我已将文件夹作为虚拟目录添加到站点,需要检查虚拟目录下的文件路径“未请求的目录” 如果该文件存在于虚拟目录下,则需要重写为处理程序,即 Site Physical Path: D:/MySite/ Virtual Directory Physical Path: D:/MySite2/ Virtual directory name: virtualDir Request file path: D:/MySite/index.cfm Check file path: D:/MySite2/in

我已将文件夹作为虚拟目录添加到站点,需要检查虚拟目录下的文件路径“未请求的目录”

如果该文件存在于虚拟目录下,则需要重写为处理程序,即

Site Physical Path: D:/MySite/
Virtual Directory Physical Path: D:/MySite2/

Virtual directory name: virtualDir

Request file path: D:/MySite/index.cfm
Check file path: D:/MySite2/index.cfm
我增加了以下规则:

<rule name="Invoke handler for virtual directory files" stopProcessing="true">
    <match url="^(.*)$" ignoreCase="true" />
    <conditions logicalGrouping="MatchAll">
        <add input="D:\MySite2{PATH_INFO}" matchType="IsFile" ignoreCase="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="true" negate="true" />
    </conditions>
    <action type="Rewrite" url="/customHandler.cfm?path={PATH_INFO}&amp;queryString={UrlEncode:{QUERY_STRING}}" appendQueryString="false" />
</rule>

这将很好地工作,但问题是我必须硬编码虚拟目录物理路径,并且它将根据环境而改变


是否有一种方法可以设置条件(基于环境)变量并在重写规则中使用该变量,或者可以在条件中使用某些替换函数?任何建议,谢谢

尝试查看
脚本\u名称
和翻译的
路径
。如果URL包含虚拟目录名,那么这些变量与regex的组合可能就是您想要的?@JamesCushing我认为这些变量会起作用。在我的例子中,我需要检查虚拟目录下的文件,而不考虑URL。你能给出一个更详细的例子吗?到目前为止,我的理解是:--1)有人连接到你的站点(映射到D:/MySite)--2)无论请求了什么URL,你都需要检查虚拟目录(D:/MySite)--3)你想一般地应用它(即在任何虚拟目录中查找文件)?如果我在这里找不到你的qn,请clarify@JamesCushing3)我想使用当前站点下的虚拟目录名来应用它。对吧,用当前站点的虚拟目录替换D:\MySite2?我不确定这是否可行-您需要IIS知道您有一个特定的“回退”虚拟目录(这似乎是您正在做的;“如果文件不存在,但确实存在于虚拟目录中,请调用自定义处理程序”),但不知道这是什么虚拟目录。你会寻找某种{MAIN_VIRTUAL_DIR}变量,我认为这是不可行的?