2010-12-06 86 views
3

我一直使用Apache,所以我完全陌生於IIS。我將如何在IIS中執行此操作?什麼是這些重寫規則的IIS等價物?

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

我已經打開了IIS管理器,並且正在查看「URL重寫」並且只需單擊「添加規則」。我認爲這是我想成爲的地方,但我不知道該從哪裏出發。


對於那些你們誰知道IIS而不是Apache的mod_rewrite,它只是檢查,如果該請求不是一個目錄也不是文件,如果是的話,接受請求的URL,並將其傳遞到index.php爲GET參數,而不是使用路由器在代碼中處理。

回答

10

您可以自動導入它們,只需轉到所需的站點或應用程序,然後雙擊URL重寫圖標,然後使用任務列表中的導入規則...鏈接。 在該UI中,只需複製/粘貼上述規則並單擊確定,它會將這些規則導入到您的web.config中。

在你的web.config的等效是(當然裏面配置/ system.webServer ...等):

<rewrite> 
    <rules> 
    <rule name="Imported Rule 1" stopProcessing="true"> 
     <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?url={R:1}" appendQueryString="true" /> 
    </rule> 
    </rules> 
</rewrite> 

有關如何導入它們的詳細信息:http://learn.iis.net/page.aspx/470/importing-apache-modrewrite-rules/

+1

哇。 。這很酷 ! – mpen 2010-12-10 01:44:06

1

您發佈的htaccess行看起來非常類似於Zend Framework使用的行。他們有一個重寫配置指南,其中有a section on IIS 7.0