主目录iis中的URL重写查询

主目录iis中的URL重写查询,iis,iis-7,url-rewriting,web-config,rewrite,Iis,Iis 7,Url Rewriting,Web Config,Rewrite,我正在尝试重新编写iis7 url以处理主目录中的查询。最终目标是让它在查询字符串的开头追加index.php。我尝试的每件事都以500个错误告终。我做错了什么 <rule name="post preview fix" patternSyntax="ECMAScript"> <match url="^\?p=([0-9]+)&preview=true" /> <action type="Rewrite" url="index.php?p=

我正在尝试重新编写iis7 url以处理主目录中的查询。最终目标是让它在查询字符串的开头追加
index.php
。我尝试的每件事都以500个错误告终。我做错了什么

<rule name="post preview fix" patternSyntax="ECMAScript">
    <match url="^\?p=([0-9]+)&preview=true"  />
    <action type="Rewrite" url="index.php?p={R:1}&preview=true"  />
</rule>

由于您希望将规则基于查询字符串,因此必须使用条件。
这样做应该可以:

<rule name="post preview fix" stopProcessing="true">
    <match url="^index.php$" negate="true" />
    <conditions>
        <add input="{QUERY_STRING}" pattern="^p=([0-9]+)&preview=true" />
    </conditions>
    <action type="Rewrite" url="index.php" />
</rule>

如果请求的页面不是
index.php
,并且查询字符串匹配
^p=([0-9]+)&preview=true
,则会触发rwrite。

默认情况下,
appendQueryString
选项设置为true,因此无需进行设置。

如果将
替换为
,浏览器中是否有所需的url?如果是,那么问题来自您的
index.php
文件。问题不是来自重定向/重写!这个网站的主页是一个虚拟目录,这可能就是它所做的。在重写之前,预览实际上工作得很好,所以我想也许为预览查询编写一条规则可以解决这个问题。我是s.o.l吗?你是说呼叫
http://website.com/index.php?p=1234&preview=true
有效,但当您从
http://website.com/?p=1234&preview=true
http://website.com/index.php?p=1234&preview=true
没有?没有。只有主目录有重写规则:
。原因是,大部分主页都是用ASP编写的,所以我们需要一种方法来用PHP实现部分网站,直到我们能够重新编写整个网站。当我删除这条规则时,后期预览会非常有效。