微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

IIS 重写条件规则不起作用

如何解决IIS 重写条件规则不起作用

首先谢谢大家,英语不是我的母语 但是这个问题对我来说很困难

我需要 http://xxxx.show.bis.tw/event_register/index.PHP?id=image01http://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 举报,一经查实,本站将立刻删除。