将.htaccess转换为IIS的web.config

时间:2011-08-10 07:19:30

标签: .htaccess iis

我有.htaccess的下一个代码,它在Apache

上非常好用
RewriteEngine On
RewriteBase /folder

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule index.php.* - [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*) index.php?id=$1

但是我需要在带有IIS的服务器上运行。你能帮我翻译一下IIS吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

如果您正在使用IIS 7,则可以为Microsoft提供的IIS安装URL Rewrite扩展。此扩展还具有导入.htaccess文件的功能。有时,并非所有线路都可以被传送(参见下面的第二行代码)。我们必须做一点调整。复制并粘贴“XML视图”中的结果'导入对话框中的选项卡进入文本编辑器,并将其保存为' web.config'文件。这是你的.htaccess转换:

<rewrite>
  <!--This directive was not converted because it is not supported by IIS: RewriteBase /folder.-->
  <rules>
    <rule name="Imported Rule 1" stopProcessing="true">
      <match url="index.php.*" ignoreCase="false" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
      </conditions>
      <action type="None" />
    </rule>
    <rule name="Imported Rule 2">
      <match url="^(.*)" ignoreCase="false" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
      </conditions>
      <action type="Rewrite" url="index.php?id={R:1}" appendQueryString="false" />
    </rule>
  </rules>
</rewrite>

注意:直接导入结果,尚未调整。