我对IIS的URL重写模块有一个看似简单的要求,我似乎无法为单页Web应用程序工作。我有一个根文件夹Dictionary<string, string> Numbers = new Dictionary<string, string> {
{"100","+100"},
{"24","+24"},
{"214","+214"},
{"3","+3"},
{"1","+1"}};
Numbers = Numbers.OrderBy(key => int.Parse(key.Key)).ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value);
SortedDictionary<int, string> Numbers1 = new SortedDictionary<int, string> {
{100,"+100"},
{24,"+24"},
{214,"+214"},
{3,"+3"},
{1,"+1"}};
,里面有一个文件夹content
。 URL在根位置使用dashboard
(即从URL中省略dashboard
)。如果网址与任何文件匹配,我希望它可以提供,否则,我希望它在信息中心文件夹中提供content
。唯一的复杂因素是仪表板位于文件系统的index.html
文件夹中,但URL中不存在content
。
这是我的文件夹结构:
content
- &gt;为URL提供此服务:/content/dashboard/foo.txt
/dashboard/foo.txt
- &gt;为URL提供此服务:/content/dashboard/assets/image.jpg
/dashboard/assets/image.jpg
- &gt;如果没有匹配
/content/dashboard/index.html
开头的任何网址提供此服务
以下是我的重写规则:
/dashboard/
即使我上面有 <rules>
<rule name="dashboard assets" stopProcessing="true">
<match url="^dashboard(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="content/{REQUEST_FILENAME}" matchType="IsFile" negate="false" />
</conditions>
<action type="Rewrite" url="content/dashboard{R:1}" />
</rule>
<rule name="dashboard app" stopProcessing="true">
<match url="^dashboard(.*)$" />
<action type="Rewrite" url="content/dashboard/index.html" />
</rule>
</rules>
条件,它似乎永远不会使用它并始终为index.html提供服务。我怎么能纠正这个?
答案 0 :(得分:0)
{REQUEST_FILENAME}返回所请求文件的完整本地目录路径。例如/content/dashboard/assets/image.jpg变量{REQUEST_FILENAME}实际上是C:\ inetpub \ wwwroot \ content \ dashboard \ assets \ image.jpg
从条件输入中删除内容/它应该可以正常工作。