PHP,使用htaccess重写URL和Microsoft IIS Url重写

And*_*rew 5 php iis url-rewriting

我习惯使用Apache服务器,所以当启用mod_rewrite时,我可以创建一个htaccess文件并使用URL重写.

这是我的htaccess文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Run Code Online (Sandbox Code Playgroud)

现在我已经构建了这个使用这个URL重写模块的站点,但我已经知道它是一个Microsoft服务器.我可以使用我的htaccess文件吗?有什么东西我需要改变才能让它发挥作用吗?如何判断是否在Microsoft服务器上设置了URL重写?

Rus*_*anY 10

如果您使用IIS 7,则可以使用IIS URL重写模块,该模块具有"导入规则"功能,可用于将mod_rewrite规则转换为IIS URL重写格式.这些特殊的重写规则将不会转换,因为RewriteCond使用"-s"和"-l"标志来检查请求的URL是对应于非零大小的文件还是对应于文件系统上的符号链接.如果您的应用程序不使用任何符号链接,那么您可以安全地将这些条件替换为:

RewriteCond %{REQUEST_FILENAME} -f [OR]
Run Code Online (Sandbox Code Playgroud)

然后使用IIS URL重写UI转换规则.这将产生以下规则:

<rewrite>
  <rules>
    <rule name="Imported Rule 1" stopProcessing="true">
      <match url="^.*$" />
      <conditions logicalGrouping="MatchAny">
        <add input="{REQUEST_FILENAME}" matchType="IsFile"  />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory"  />
      </conditions>
      <action type="None" />
    </rule>
    <rule name="Imported Rule 2" stopProcessing="true">
      <match url="^.*$" />
      <action type="Rewrite" url="index.php" />
    </rule>
  </rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)


Che*_*eso 5

您可以在Ionic的Isapi重写过滤器(IIRF)中按原样使用您的配置.

IIRF是免费的,开源的.