在 IIS7 上使用 web.config 删除 .php 扩展名
Posted
技术标签:
【中文标题】在 IIS7 上使用 web.config 删除 .php 扩展名【英文标题】:Remove .php extensions with web.config on IIS7 【发布时间】:2012-09-08 16:46:35 【问题描述】:我有一个 .htaccess 文件,它从文件中删除 .php 扩展名,例如将 so.com/question.php 转换为 so.com/问题,并重定向文件夹中的索引文件,例如so.com/answer/index.php 完全按照in this answer
的描述重定向到 so.com/answer/我刚刚在 IIS7 上本地设置了我的网站,需要在 web.config 中重新创建相同的行为,但不知道从哪里开始转换/重写 .htaccess 文件。
【问题讨论】:
【参考方案1】:我发现IIS7及以上可以使用URL Rewrite模块导入Apache .htaccess规则。
-
通过Microsoft Web 平台安装程序安装URL Rewrite module
启动 IIS 管理器,然后在左侧的“连接”窗格中,选择所需的站点(例如默认网站)
在中心(功能视图)双击URL Rewrite。
在右侧面板中单击导入规则...,然后将 .htaccess 文件中的规则粘贴到 重写规则 框中
点击右栏中的应用。
在上面的特定问题中使用以下 .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>
【讨论】:
以上是关于在 IIS7 上使用 web.config 删除 .php 扩展名的主要内容,如果未能解决你的问题,请参考以下文章
从 iis7 中的 wordpress URL 中删除 index.php
IIS7,web.config 只允许在网站的 /uploads 目录中使用静态文件处理程序
Web 应用程序问题(web.config 错误)HTTP 500.19 与 IIS7.5 和 ASP.NET v2