IIS 隐藏来自 URL 的 GET 参数

问题描述 投票:0回答:2

在服务器中,我们使用带有 PHP、PHP 管理器的 Internet 信息服务 (IIS)。我想隐藏“dava”参数,不仅针对 /kovusturma-sartlari/onodeme/ 页面,在整个网站中“dava”键应该隐藏并且应该是页面/值。

当前网址:http://localhost/kovusturma-sartlari/onodeme?dava=f2b80bf7

预期网址:http://localhost/kovusturma-sartlari/onodeme/f2b80bf7

我目前的规则:

            <rewrite>
                <rules>
                    <rule name="Add .php extension" stopProcessing="true">
                        <match url="^(.*)$" ignoreCase="false" />
                        <conditions>
                            <add input="{REQUEST_FILENAME}.php" matchType="IsFile" />
                            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                            <add input="{REQUEST_URI}" pattern="^/home" negate="true" />
                        </conditions>
                        <action type="Rewrite" url="{R:1}.php" />
                    </rule>
                    <rule name="Rewrite to /home" stopProcessing="true">
                        <match url="^(.*[^\\]+)$" />
                        <conditions>
                            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        </conditions>
                        <action type="Rewrite" url="/home/{R:1}.php" />
                    </rule>
                </rules>
            </rewrite>

我试过:

<rule name="Hide Query String" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{QUERY_STRING}" pattern="dava=(.+)" />
    </conditions>
    <action type="Rewrite" url="{R:0}/{C:1}" appendQueryString="false" />
</rule>
php regex iis url-rewriting
2个回答
0
投票

也许试试这个?

<rule name="Hide Query String" stopProcessing="true">
    <match url="^([^?]*)(\?.*)*$" />
    <conditions>
        <add input="{QUERY_STRING}" pattern="dava=(.+)" />
    </conditions>
    <action type="Rewrite" url="{R:1}/{C:1}" appendQueryString="false" />
</rule>

0
投票

您可以参考这篇文章,文章中的示例将帮助您了解如何创建正确的重写规则.

如果你想隐藏/kovusturma-sartlari/onodeme/页面的“dava”参数,你可以尝试以下规则:

当前网址: http://localhost/kovusturma-sartlari/onodeme?dava=f2b80bf7

预期网址:http://localhost/kovusturma-sartlari/onodeme/f2b80bf7

<rule name="Hide Query String">
    <match url="^kovusturma-sartlari/onodeme/([0-9a-z]+)" />
    <action type="Rewrite" url="kovusturma-sartlari/onodeme?dava={R:1}" />
</rule>

如果需要在整个网站隐藏“dava”键,需要根据自己网站的具体情况修改规则,如:

<rule name="Hide Query String">
    <match url="(.*)/([0-9a-z]+)" />
    <action type="Rewrite" url="{R:1}?dava={R:2}" />
</rule>

另外,当你的IIS rewrite rules出现问题时,你可以尝试使用Failed Request Tracing来追踪rewrite rules进行故障排除,你可以看到内部是如何使用这些规则的。

© www.soinside.com 2019 - 2024. All rights reserved.