IIS重写网址两次?

时间:2016-10-16 21:54:56

标签: php iis url-rewriting url-rewrite-module

我有一个网址'/ quote / details / e4dd5f4e4c705436ba381b0dc06fccc0'重写为:'/ quote / details /?retrieveQuote = e4dd5f4e4c705436ba381b0dc06fccc0'

<rule name="Rewrite Saved Quote to Query String Type" stopProcessing="false">
    <match url="^quote/details/([^/]+)/?$" />
    <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="quote/details/?retrieveQuote={R:1}" appendQueryString="true" />
</rule>

这是有效的,因为当我将stopProcessing设置为true时,我得到一个具有正确输出的404: 请求的网址引用/详细信息/?retrieveQuote = e4dd5f4e4c705436ba381b0dc06fccc0

现在应该像使用此网站的其他部分一样重写:

<rule name="Rewrite to Index" patternSyntax="Wildcard" stopProcessing="true">
    <match url="*" />
    <conditions>
        <add input="{URL}" pattern="/admin/+" ignoreCase="false" negate="true" />
        <add input="{URL}" pattern="/api/+" ignoreCase="false" negate="true" />
        <add matchType="IsFile" negate="true" />
        <add matchType="IsDirectory" negate="true" />
    </conditions>
    <action type="Rewrite" url="index.php" appendQueryString="true" />
</rule>

但由于某种原因它没有,如果我使用$ _SERVER ['REQUEST_URI']它打印:quote / details / e4dd5f4e4c705436ba381b0dc06fccc0但应该是:quote / details /?retrieveQuote = e4dd5f4e4c705436ba381b0dc06fccc0

任何想法如何让它正常工作?

1 个答案:

答案 0 :(得分:0)

我无法找到任何解决方案,所以我创建了一个路由规则并从URL中拆分所需的参数。