在运行IIS 7的服务器上隐藏PHP扩展

在运行IIS 7的服务器上隐藏PHP扩展,php,iis-7,url-rewriting,Php,Iis 7,Url Rewriting,我正在将一个php web应用程序从Linux迁移到IIS 7。我需要做的是隐藏所有显示php的内容,因此url扩展和链接主要是。我认为没有任何其他东西需要隐藏,因为它们已经不显示了。有什么建议吗?本地Apache mod_重写的下一个最好的方法可能是 以下是有关Microsoft Mod Rewrite 2.0的更多信息: 查看php.ini中的选项,以及建议的mod_重写。ISAPI_重写是Apache上mod_重写的一个很好的替代方案;我们已经在Windows+IIS上部署的许多项目中使用

我正在将一个php web应用程序从Linux迁移到IIS 7。我需要做的是隐藏所有显示php的内容,因此url扩展和链接主要是。我认为没有任何其他东西需要隐藏,因为它们已经不显示了。有什么建议吗?

本地Apache mod_重写的下一个最好的方法可能是

以下是有关Microsoft Mod Rewrite 2.0的更多信息:


查看
php.ini
中的选项,以及建议的mod_重写。

ISAPI_重写是Apache上mod_重写的一个很好的替代方案;我们已经在Windows+IIS上部署的许多项目中使用了它。语法与mod_rewrite相同,它支持我在Apache mod_rewrite上使用过的所有功能

你可以使用一个免费版本,将规则应用到服务器上的每个站点;如果您有创意,可以使用RewriteCond将它们限制在映射到站点的特定域中。如果这在你的预算中,付费版本也值得


在IIS 7上使用本机IIS URL重写模块。如果在IIS 6或更早版本上部署,ISAPI_重写是最佳选择

URL重写模块还可以从.htaccess中导入大部分mod_重写规则,如果这也有帮助的话


从这里开始

要在我的服务器上执行此操作,我必须首先安装URL重写模块

然后,我必须添加一个带有此XML的web.config文件(如果添加了,可以删除.php,也可以不可见地将.php添加到URL中):


查看IIS上的mod_重写:
    <?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Redirect .php extension" stopProcessing="false">
                    <match url="^(.*).php$" ignoreCase="true" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{URL}" pattern="(.*).php$" ignoreCase="false" />
                    </conditions>
                    <action type="Redirect" url="{R:1}" redirectType="Permanent" />
                </rule>
                <rule name="hide .php extension" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="true" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_FILENAME}.php" matchType="IsFile" />
                    </conditions>
                    <action type="Rewrite" url="{R:0}.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>