在IIS7上使用web.config删除.php扩展名

时间:2012-09-15 21:55:12

标签: php .htaccess url-rewriting web-config

我有 .htaccess 文件,该文件会从文件中删除.php扩展名,例如将 so.com/question.php 转换为 so.com/问题,并且还重定向文件夹中的索引文件,例如 so.com/answer/index.php 完全按照in this answer所述重新定向到 so.com/answer /

我刚刚在IIS7上本地设置了我的网站,需要在 web.config 中重新创建相同的行为,但不知道从哪里开始转换/重写.htaccess文件。< / p>

1 个答案:

答案 0 :(得分:24)

我发现IIS7及以上版本可以使用 URL重写模块导入Apache .htaccess规则。

  1. 通过 Microsoft Web Platform Installer
  2. 安装URL Rewrite module
  3. 启动IIS管理器,在左侧的“连接”窗格中,选择所需的站点(例如,默认网站)
  4. 在中心(功能视图)中,双击 URL重写
  5. 在右侧面板中点击导入规则... ,然后将.htaccess文件中的规则粘贴到重写规则框中
  6. 点击右栏中的“应用”。
  7. 在上面的具体问题中,以下.htaccess重定向规则

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME}.php -f
    RewriteRule ^(.*)$ $1.php [NC,L]
    

    生成以下web.config文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <rewrite>
                <rules>
                    <rule name="Imported Rule 1" stopProcessing="true">
                        <match url="^(.*)$" />
                        <conditions logicalGrouping="MatchAll">
                            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                            <add input="{REQUEST_FILENAME}.php" matchType="IsFile" ignoreCase="false" />
                        </conditions>
                        <action type="Rewrite" url="{R:1}.php" />
                    </rule>
                </rules>
            </rewrite>
        </system.webServer>
    </configuration>