【问题标题】:IIS Rewrite Safely Add Custom Query StringIIS 安全重写添加自定义查询字符串
【发布时间】:2014-07-30 11:35:40
【问题描述】:

我想将 url 路径中的某些内容移到查询字符串中。这几乎就像子域重写。这是重写的样子: ~/ch-ar/rest -> ~/rest?dom=ch-ar ~/su-bd/rest?param=val -> ~/rest?param=val&dom=su-bd

我绝对可以通过匹配/替换来完成第一部分,这不是我能够解释的。我不确定是否有某种方法可以安全地将我的键值对添加到 {QUERY_STRING} 变量中,但这可能是理想的。这个名称值对的键永远不会改变,查询字符串的顺序对我来说并不重要。

【问题讨论】:

    标签: iis iis-7 url-rewriting


    【解决方案1】:

    我建议使用以下 2 条规则,一条用于具有查询字符串的请求,另一条用于没有查询字符串的请求。我以特定语言的 URI 词干为例,并将操作设置为重定向,以便更容易测试。

                <rule name="Language URI to QS - Existing Query String" stopProcessing="true">
                    <match url="^([a-z]{2}-[a-z]{2})(.*)" />
                    <conditions>
                        <add input="{QUERY_STRING}" pattern="(.+)" />
                    </conditions>
                    <serverVariables>
                        <set name="QUERY_STRING" value="{C:1}&amp;dom={R:1}" />
                    </serverVariables>
                    <action type="Redirect" url="{R:2}" appendQueryString="true" redirectType="Found" />
                </rule>
    
                <rule name="Language URI to QS - No Query String" stopProcessing="true">
                    <match url="^([a-z]{2}-[a-z]{2})(.*)" />
                    <conditions>
                        <add input="{QUERY_STRING}" pattern=".+" negate="true" />
                    </conditions>
                    <serverVariables>
                        <set name="QUERY_STRING" value="dom={R:1}" />
                    </serverVariables>
                    <action type="Redirect" url="{R:2}" appendQueryString="true" redirectType="Found" />
                </rule>
    

    【讨论】:

    • 这听起来是个好主意,尽管我需要查看 negate 的作用。我希望我可以在一个规则中使用正则表达式中的前瞻来做到这一点,并将结果绑定为“?”在我如何附加语言的输入中,但看起来我无法做到这一点。
    • 否定反转条件: 简单的英语:条件是如果查询字符串不包含“某物”,则为 true。为了我的理智,我尽量让我的重写尽可能简单,当你必须在 6 个月后筛选数十次重写时......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多