2009-06-22 155 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>