如何使用IIS URL重写排除目录?
我有一个domain.com/index.php和一个友好的url规则来重定向domain.com/index.php?s=?请求。我使用带有URL重写插件的IIS Web服务器 上面的工作很好。但是,对管理员目录的请求有问题 我还有domain.com/admin/cloud/index.php,有时需要它来获取或发送数据(通过Ajax)。当规则处于活动状态时,数据不可用,当我删除上述规则时,数据可用 如何使用上述url规则并排除domain.com/admin/内(或到)的所有其他请求 这是我当前的规则集:如何使用IIS URL重写排除目录?,url,iis,iis-7,rewrite,url-rewrite-module,Url,Iis,Iis 7,Rewrite,Url Rewrite Module,我有一个domain.com/index.php和一个友好的url规则来重定向domain.com/index.php?s=?请求。我使用带有URL重写插件的IIS Web服务器 上面的工作很好。但是,对管理员目录的请求有问题 我还有domain.com/admin/cloud/index.php,有时需要它来获取或发送数据(通过Ajax)。当规则处于活动状态时,数据不可用,当我删除上述规则时,数据可用 如何使用上述url规则并排除domain.com/admin/内(或到)的所有其他请求 这是
<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
<match url="^index\.php$" />
<conditions>
<add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
<add input="{QUERY_STRING}" pattern="^s=([^=&]+)$" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
<match url="^([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?s={R:1}" />
</rule>
我尝试了很多方法,包括路径信息。。。但是没有成功。也许有人能给点提示
谢谢 看一看,您可以添加此规则,这样当您不想处理的请求出现时,您可以忽略它并停止处理
它应该放在第一位,以便此规则在其他两个规则之前执行
<rule name="block" stopProcessing="true">
<match url="^admin/cloud/index.php$" />
<action type="None" />
</rule>
您好,这里提供了两条规则。哪个规则会弄乱/admin/cloud/index.php请求?好问题。我不知道。看来IIS或URL重写模块会把请求搞砸。我现在将规则分成两部分:1)检查它是否包含“cloud”,2)检查它是否必须重写为index.php(因此从友好url到内部url)。如果检查有效,第一条规则将停止处理(在这种情况下,第二条规则不是Nessary)。。。出于某种原因,第一次检查并不是绕过问题的解决方案。[…][…]只有第二条规则,友好的url才起作用,但管理部分不起作用。只有第一条规则,管理部分工作,但友好的url部分不工作。有时候,它确实有用。。。但几分钟或几个小时后,两个独立规则的解决方案不再有效。我不知道在哪里可以找到“真正的问题”。@Shahdat这些规则是在请求到达ASP.NET引擎之前应用的,所以它应该可以工作。考虑下一个问题,把链接放在这里,这样我就可以看一看。我必须将动作类型更改为CustomResponse