【问题标题】:IIS - Configuration file is not well-formed XMLIIS - 配置文件不是格式正确的 XML
【发布时间】:2015-11-08 03:49:27
【问题描述】:
<rule name="Posts2" enabled="true">
    <match url="^index.cfm\?section=latest.news&id=(.*)" />
    <action type="Rewrite" url="post.php?id={R:1}" />
</rule>

问题在于正则表达式 - 有什么想法吗?我似乎无法解决它。我已经在http://www.xmlvalidation.com/ 上运行它,它说

The reference to entity "id" must end with the ';' delimiter.

当我将 & 符号更改为 &amp;amp; 时,重写似乎不适用于诸如 /index.cfm?section=latest.news&amp;id=14726 之类的 URL,尽管它通过了 IIS 中的测试。即使我避开了点和问号,它也不起作用

【问题讨论】:

    标签: regex iis url-rewriting


    【解决方案1】:

    尝试使用{QUERY_STRING} 输入,也许使用conditions

    <rule name="Posts2">  
      <match url="index\.cfm$" />  
        <conditions>  
          <add input="{QUERY_STRING}" pattern="section=(latest\.news)" />  
          <add input="@{C:1}@_{QUERY_STRING}" pattern="@([^@]+)@_.*id=(\d+)" />  
        </conditions>  
       <action type="rewrite" url="post.php?id={C:2}" appendQueryString="false"/>  
     </rule>
    

    包含查询字符串的 URL 通常以这种方式处理得更好,但如果您真的不想走这条路线,请确保包含所有正确的标签,并尝试在 latest\.news 之间转义 .

    <rewrite>
      <rules>
        <rule name="Posts2">
          <match url="^index\.cfm\?section=latest\.news&id=(\d+)" />
          <action type="Rewrite" url="post.php?id={R:1}" />
        </rule>
      </rules>
    </rewrite>
    

    【讨论】:

    • 我得到以下信息:配置文件不是格式正确的 XML。当我将 & 更改为 &它在第二个似乎不起作用(404 错误),但它在第一个 :-)
    • 您是否尝试使用带有 标签的第一个示例?尚不清楚您对格式不正确的 XML 的含义是什么。第二个示例可能不适用于包含的&amp;。也许尝试在那个上使用index.cfm\?section=latest\.news.*id=(\d+)
    • 我发现了另一个潜在问题,将第二个的 URL 更改为 index\.cfm...
    猜你喜欢
    • 2014-06-17
    • 2022-01-24
    • 1970-01-01
    • 2019-04-29
    • 2018-07-17
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多