1. 程式人生 > >301ReidrectPages中重復記錄導致的500 server error

301ReidrectPages中重復記錄導致的500 server error

mat action host mov ble currently .config 平臺開發 remove

在Umbraco平臺開發一個系統時,遇到一個問題,報錯500 server error, system is currently unable to handle this request.

按下F12鍵,查看發現是報 URL Rewrite module error

在該系統目錄下,確實有一個301RedirectsPages.config 文件,裏面是對老系統的一些url, redirect到新系統下的新url.裏面格式如下:

<rewriteMaps>
<rewriteMap name="Redirects">
<add key="/Aa" value="/BBb"
/> <add key="/Ac" value="/Bc"/> <add key="/Ad" value="/Bd"/> <add key="/Ae" value="/Be"/> <add key="/Af" value="/Bf"/> <add key="/Ag" value="/Bg"/> <add key="/Ah" value="/Bh"/> <add key="/Ac" value="/Bc"/> <add key="/Ad" value="/Bd"/> <add key="/Ai" value="/Bi"/> <add
key="/Ak" value="/Bk"/> </rewriteMap> </rewriteMaps>

在系統目錄下的webconfig文件中,有<system.webServer>節點下,有一個rewrite節點,如下:

<system.webServer>
<rewrite>
        <rewriteMaps configSource="301RedirectsPages.config" />
      <rules>
        <rule name="Redirect to HTTPS"
stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" /> </rule> <rule name="Remove trailing slash" stopProcessing="true"> <match url="(.*)/$" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Redirect" redirectType="Permanent" url="{R:1}" /> </rule> <rule name="Redirects"> <match url=".*" /> <conditions> <add input="{Redirects:{REQUEST_URI}}" pattern="(.+)" /> </conditions> <action type="Redirect" url="{C:1}" appendQueryString="false" /> </rule> </rules> </rewrite> </system.webServer>

弄了很久,都沒有搞明白是哪裏出現了問題。後來才發現問題出現中 301RedirectsPages.config 中,因為這個文件中存在重復記錄。導致了這個問題出現

比如上面的301RedirectsPages.config文件中,

<add key="/Ac" value="/Bc"/>
<add key="/Ad" value="/Bd"/> 
這兩個都重復了兩次,把重復的刪除。
這個問題就解決了

301ReidrectPages中重復記錄導致的500 server error