2012-06-10 111 views
2

我想創建一個非常簡單的URL重寫規則。我在Visual Studio 2010本地使用IIS 7 Express(XP)。我創建的規則(從示例here中複製)在本地完美工作。然而,一旦我將它複製到我的主機服務器,我得到一個500錯誤。從web.config中ASP.Net URL在GoDaddy上重寫500錯誤

摘錄:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    <rewrite> 
     <rules> 
      <rule name="Rewrite to article.aspx"> 
       <match url="^article/([0-9]+)/([_0-9a-z-]+)" /> 
       <action type="Rewrite" url="article.aspx?id={R:1}&amp;title={R:2}" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 

假設規則是什麼打破了應用程序,我已經刪除了規則部分,但應用程序仍然拋出一個500錯誤。但是,如果我完全刪除重寫部分,則應用程序會正常加載。

所以我的問題是,我從我的web.Config缺少什麼?他們聲稱這是一個腳本問題,並且URL模塊已正確安裝並在IIS 7服務器上運行。有什麼方法可以用腳本來確認嗎?

+0

有什麼方法可以確定500錯誤的實際原因? –

+0

不,我試着按照GoDaddy的說明添加調試輸出,包括ELMAH。不幸的是,這個異常被吞噬,並且這兩種方法都沒有產生堆棧跟蹤。 –

回答

0

我有完全相同的問題,並花費太多時間嘗試使用GoDaddy支持來獲得Microsoft URL重寫工作。最終,我根據this post啓動並運行了ManagedFusion Rewriter。

我在GoDaddy 4GH Ultimate Windows主機上啓用SSL。我將WordPress安裝在根目錄(永久鏈接正在工作!)和其他.NET應用程序在虛擬目錄中運行。

我真的希望這可以幫助別人避免試圖讓微軟URL重寫上GoDaddy的網格工作託管...

爲了記錄在案,這裏是我的ManagedFusion重寫規則,妥善處理WordPress的永久鏈接:

RewriteEngine On 

RewriteBase/

# wordpress admin folder rewrite rules 
RewriteCond %{REQUEST_URI} ^wp-admin/ 
RewriteRule ^wp-admin/(.*) . /wp-admin/$1 [C] 

# wordpress includes folder rewrite rules 
RewriteCond %{REQUEST_URI} ^wp-includes/ 
RewriteRule ^wp-includes/(.*) . /wp-includes/$1 [C] 

# wordpress general rewrite rules 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*) /index.php [L] 

我從鏈接的帖子中逐字逐句使用了web.config,只是刪除了<defaultDocument enabled="false" />這一行。