URL 重写是用两个段重写我的所有文件
URL rewriting is rewriting ALL my files with two segments
这是我在网络配置中的规则
<rule name="rewrite">
<match url="^([^/]+)/([^/]+)?$" />
<action type="Rewrite" url="/review.aspx?c={R:1}&t={R:2}" appendQueryString="false" />
</rule>
成功将review.aspx?c=value&t=value
变为/value/value
我现在的问题是,我的 /css/style.css
现在加载为 review.aspx
有办法阻止吗?不仅 CSS,而且所有实例?
Rewrite rule conditions 使您可以限制重写规则的应用,使其仅适用于满足条件的请求。
通过定义如下所示的条件,您可以确保仅对与现有文件不匹配的 URL 进行重写。
<rule name="rewrite">
<match url="^([^/]+)/([^/]+)?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/review.aspx?c={R:1}&t={R:2}" appendQueryString="false" />
</rule>
它的工作方式是,对于每个请求,在重写发生之前,重写引擎会检查是否满足定义的条件,然后在不满足条件的情况下跳过重写规则。
我们定义的条件是:请求不能引用磁盘上的实际文件。
这样做的原因是我们只希望将重写应用于具有 /value/value
等虚拟 URL 的请求,而不是对 /css/style.css
.
等静态文件的请求
要准确分解条件的不同属性的含义:
input="{REQUEST_FILENAME}"
告诉重写引擎我们想要
针对 REQUEST_FILENAME
服务器变量执行测试。这
该变量的值类似于
C:/mywebsite/value/value
或 C:/mywebsite/css/style.css
.
matchType="IsFile"
告诉引擎检查上面的输入是否匹配磁盘上的现有文件。
negate="true"
告诉引擎反转检查结果,这样当输入 不 匹配现有文件时满足条件,而不是当它确实匹配。
由于匹配模式,您可能需要添加排除项,例如:
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_URI}" pattern="\.js|\.css|\.jpg" negate="true" />
</conditions>
这是我在网络配置中的规则
<rule name="rewrite">
<match url="^([^/]+)/([^/]+)?$" />
<action type="Rewrite" url="/review.aspx?c={R:1}&t={R:2}" appendQueryString="false" />
</rule>
成功将review.aspx?c=value&t=value
变为/value/value
我现在的问题是,我的 /css/style.css
现在加载为 review.aspx
有办法阻止吗?不仅 CSS,而且所有实例?
Rewrite rule conditions 使您可以限制重写规则的应用,使其仅适用于满足条件的请求。
通过定义如下所示的条件,您可以确保仅对与现有文件不匹配的 URL 进行重写。
<rule name="rewrite">
<match url="^([^/]+)/([^/]+)?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/review.aspx?c={R:1}&t={R:2}" appendQueryString="false" />
</rule>
它的工作方式是,对于每个请求,在重写发生之前,重写引擎会检查是否满足定义的条件,然后在不满足条件的情况下跳过重写规则。
我们定义的条件是:请求不能引用磁盘上的实际文件。
这样做的原因是我们只希望将重写应用于具有 /value/value
等虚拟 URL 的请求,而不是对 /css/style.css
.
要准确分解条件的不同属性的含义:
input="{REQUEST_FILENAME}"
告诉重写引擎我们想要 针对REQUEST_FILENAME
服务器变量执行测试。这 该变量的值类似于C:/mywebsite/value/value
或C:/mywebsite/css/style.css
.matchType="IsFile"
告诉引擎检查上面的输入是否匹配磁盘上的现有文件。negate="true"
告诉引擎反转检查结果,这样当输入 不 匹配现有文件时满足条件,而不是当它确实匹配。
由于匹配模式,您可能需要添加排除项,例如:
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_URI}" pattern="\.js|\.css|\.jpg" negate="true" />
</conditions>