2009-06-22 132 views
5

我习惯与Apache服务器的工作,所以启用了mod_rewrite的时候,我可以创造一个htaccess文件,并使用URL重写。PHP,URL与htaccess的重写,和Microsoft IIS 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] 

现在我已经建立了这个网站,使用此URL重写模块,但我是来学习,这是微软的服务器。我可以使用我的htaccess文件吗?有什么我需要改变才能使它起作用吗?如何知道是否在Microsoft服务器上设置了URL重写?

回答

4

的.htaccess文件是Apache的约定提供最终用户的Apache配置访问权限,所以你不会是能够使用它作为一个IIS(微软)服务器,在更换下降。如果您在Windows上运行Apache,您可以使用

IIS7有一个URL rewriting module,它支持重写URL。还有一些ISAPI_Rewrite产品可以为以前版本的IIS提供相同的功能。您可能需要某些服务器级别的管理权限才能使用这些模块(即,不使用类似htaccess的机制)

10

如果使用IIS 7,那么你可以使用IIS URL重写模块,具有能够用于翻译的mod_rewrite规则到IIS URL重写格式的"Import Rules" feature。这些特定的重写规则不会被翻译,因为RewriteCond使用“-s”和“-l”标志来检查请求的URL是否对应于非零大小的文件或文件系统上的符号链接。如果您的应用程序不使用任何符号链接,那么你可以安全地更换这些条件:

RewriteCond %{REQUEST_FILENAME} -f [OR] 

,然后使用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>