2011-07-22 65 views
1

是否有一種方法可以使用web.config替代iph上的cakephp應用程序的.htaccess?we.config和cakephp應用程序

當前.htaccess文件

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 

UPDATE:

IIS6中使用的進口。它給了我這個web.config,但網站不工作。我得到一個白色的屏幕。也試過這個http://book.cakephp.org/revisions/view/19937/URL-Rewrites-on-IIS7-Windows-hosts,它也沒有工作。

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="Imported Rule 1" stopProcessing="true"> 
        <match url="^$" ignoreCase="false" /> 
        <action type="Rewrite" url="webroot/" /> 
       </rule> 
       <rule name="Imported Rule 2" stopProcessing="true"> 
        <match url="(.*)" ignoreCase="false" /> 
        <action type="Rewrite" url="webroot/{R:1}" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

回答

1

安裝IIS的Microsoft URL重寫模塊。它會讓你導入你的Apache重寫規則。你可以在這裏找到模塊:

http://www.iis.net/download/urlrewrite

我使用CakePHP使用它在IIS 7.0和7.5,它的工作原理治療。

編輯

你能試試我這個配置?

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <clear /> 
       <rule name="Imported Rule 1-1" stopProcessing="true"> 
        <match url="^(.*)$" ignoreCase="false" /> 
        <conditions logicalGrouping="MatchAll"> 
         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
         <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
        </conditions> 
        <action type="Rewrite" url="/webroot/index.php?url={R:1}" appendQueryString="true" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 
+0

謝謝,雖然我聽說IIS 7有內置的URL重寫,它可以使用web.config文件。你有沒有聽說過? – madphp

+0

我不相信它是作爲標準安裝的,但如果沒有安裝它,您可以使用Web Platform Installer或通過我提供的鏈接下載它。安裝後,您可以通過雙擊IIS管理器的IIS部分中的「URL Rewrite」圖標開始添加規則。您在那裏輸入的規則存儲在web.config文件中。 –

+0

這對你有幫助嗎?我能再幫忙嗎? –