我的.htaccess文件在IIS上不起作用

时间:2011-04-20 15:47:21

标签: apache iis .htaccess

我的.htaccess文件中有以下重写配置,它在apache服务器上工作正常,但在IIS服务器中无法正常工作。

Options +FollowSymlinks 
RewriteEngine on
RewriteCond %{HTTP_HOST} ^myservername/$ [NC]
RewriteRule ^(.*)$ http://myservername/$1 [R=301,L]
RewriteRule !\.(php|png|gif|jpg|css|htm|html|txt|js|swf|xml|ico|mp3|csv|wav|mid) /index.php [L,QSA]

如何在IIS上使用它?

2 个答案:

答案 0 :(得分:4)

IIS不支持.htaccess开箱即用。要在IIS上使用Apache样式的mod_rewrite规则,您需要第三方重写器,例如Iconics ISAPI Rewrite Filter或HeliconTech的ISAPI_Rewrite。您可能需要调整重写规则,因为并非所有mod_rewrite指令都受支持或适用(因为Windows不是Unix)。

如果您正在运行IIS7并且安装了UrlRewriter(免费),您可以使用它,但您需要将重写规则转换为完全不同的格式。

答案 1 :(得分:2)

请创建名为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="MatchAny">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile"  />                      
                    </conditions>
                    <action type="None" />
                </rule>
                <rule name="Imported Rule 2" stopProcessing="true">
                    <match url="^(.*)$" />
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>