如何将Apache .htaccess规则转换为IIS web.config以追加.php扩展名
将Apache .htaccess重写规则转换为IIS web.config
你的.htaccess规则作用是隐藏URL中的.php后缀:当访问如yourdomain.com/xxx的地址时,若xxx.php文件存在且请求的不是目录,服务器会自动映射到xxx.php处理请求。
对应的IIS web.config配置代码如下:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Hide PHP Extension" stopProcessing="true"> <match url="^(.*)$" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> <add input="{REQUEST_FILENAME}.php" matchType="IsFile" /> </conditions> <action type="Rewrite" url="{R:1}.php" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
配置说明:
<rewrite>节点对应.htaccess中的RewriteEngine on,用于开启IIS的URL重写功能- 第一个条件
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />对应RewriteCond %{REQUEST_FILENAME} !-d,判断请求路径不是一个存在的目录 - 第二个条件
<add input="{REQUEST_FILENAME}.php" matchType="IsFile" />对应RewriteCond %{REQUEST_FILENAME}\.php -f,判断请求路径加上.php后是一个存在的文件 <action type="Rewrite" url="{R:1}.php" />对应RewriteRule ^(.*)$ $1.php,将请求路径重写为带.php后缀的形式
注意:使用前需确保你的IIS服务器已安装URL重写模块,若未安装可通过服务器管理器添加该组件。
内容的提问来源于stack exchange,提问作者Kumara
相关产品推荐
相关产品推荐

