lindu 2017-10-24 10:51 采纳率: 0%
浏览 462

新人提人 关于IIS中伪静态规则如何写?

本人使用的是IIS中的伪静态 有http.ini文件
现在想实现以下效果:
http://www.xxx.com/任意英文目录/ 映身到 /plug/index.asp?catalog=$1
因为网站根目录下来还有 news / ask 等实际存在的目录,我使用 (a-z) 做规则,会导致实际存在的目录也被映射走了

http://www.xxx.com/news/ 这个实际存在的目录 也被伪静为 /plug/index.asp?catalog=news了
问:如何使用规则,排除实际存在的目录
新人,暂时没有C币 麻烦了

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 02:17
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,您需要在您的IIS的http.ini配置文件中添加一个正则表达式来匹配您想要映射的URL。下面是一个简单的示例:

    <rewrite>
        <rules>
            <rule name="RedirectToPlugIn" stopProcessing="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll">
                    <add input="{HTTP_HOST}" pattern="^www\.([A-Za-z]{2,})\." negate="true"/>
                    <add input="{REQUEST_URI}" matchType="IsAbsolute" pattern="^(?!.*\/)(.*)$" negate="true"/>
                </conditions>
    
                <action type="Redirect" url="/plug/index.asp?" permanent="false" redirectType="301" appendQueryString="true"/>
            </rule>
        </rules>
    </rewrite>
    

    在这个例子中,我们首先检查请求的主机名是否以www.开头,并且请求的URI是否只包含字母和数字字符(即不包含斜杠)。如果满足这些条件,我们就将请求重定向到/plug/index.asp?

    请注意,这个正则表达式的精确匹配可能会导致一些问题,特别是当域名中有多个层次时。例如,如果域名是www.example.org, 则www.example.org/news将被映射到/plug/index.asp?catalog=news

    此外,这个正则表达式也没有考虑子目录的存在。如果您希望处理这种情况,您可能需要修改它以包括子目录的匹配。

    最后,请注意,这只是一个基本的示例,您可以根据自己的需求进行调整。

    评论

报告相同问题?