如何解决IIS 重写条件规则不起作用
首先谢谢大家,英语不是我的母语 但是这个问题对我来说很困难
我需要
http://xxxx.show.bis.tw/event_register/index.PHP?id=image01
到
http://xxxx.show.bis.tw/event_register/image01
如果用户在地址栏输入 http://xxxx.show.bis.tw/event_register/image01
该网站可以工作
我认为规则是
用户可以输入这些
http://xxxx.show.bis.tw/event_register/image01
http://xxxx.show.bis.tw/event_register/index.PHP?id=image01
1.
http://xxxx.show.bis.tw/event_register/index.PHP?id=image01
像这样重定向 http://xxxx.show.bis.tw/event_register/image01
并转到规则 2
重写<action type="Rewrite" url="index.PHP?id={C:1}" />
2.
http://xxxx.show.bis.tw/event_register/image01
只是重写<action type="Rewrite" url="index.PHP?id={C:1}" />
我的代码是 如果文件和目录做重定向或重写网站会损坏 (css/js/image)
我尝试将规则>1 和规则>2 写在一个规则中,但它不起作用 不知道怎么解决
<rewrite>
<rules>
// 1
<rule name="025" stopProcessing="true">
<match url=".*" />
<conditions> // file and directory not Redirect|Rewrite
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Redirect" url="{C:0}" appendQueryString="false" />
</rule>
// 2
<rule name="026">
<match url="index\.PHP(.*)" />
<conditions>
<add input="{QUERY_STRING}" pattern="id=(.*)" />
</conditions>
<action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>
// 3
<rule name="027" enabled="true" stopProcessing="true">
<match url=".*" ignoreCase="true" />
<conditions>
<add input="{URL}" pattern="/index.PHP?id=" negate="true" />
</conditions>
<action type="Rewrite" url="index.PHP?id={R:1}" />
</rule>
</rules>
</rewrite>
谢谢大家非常感谢 我几乎两天睡不着就解决这个问题
解决方法
您是否尝试过重写映射而不是 web.config 文件中的规则?
<configuration>
<system.webServer>
<rewrite>
<rewriteMaps>
<rewriteMap name="rewrites">
<add key="/event_register/image01" value="/event_register/index.php?id=image01" />
</rewriteMap>
</rewriteMaps>
</rewrite>
</system.webServer>
</configuration>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。