Asp.net

IIS URL 重寫和 Web.config

  • December 10, 2010

我對 IIS 一無所知,但我正在嘗試解決將所有訪問者重定向到 domain.com/page 到 domain.com/page.html 的問題

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <system.webServer>
   <rewrite>
         <rewriteMaps>
             <rewriteMap name="StaticRedirects">
                 <add key="/page" value="/page.html" />
             </rewriteMap>
           </rewriteMaps>
     </rewrite>
 </system.webServer>
</configuration>

出現了幾個問題:

  1. 我什至不知道把文件放在哪裡。有一個使用者根目錄和一個htdocs目錄,我都試過了,不高興。
  2. 我什至不知道該帳戶是否可以重寫,我正在嘗試找出答案。
  1. 您現有的 web.config:您已經聲明了 rewrite map .. 但尚未創建任何使用它的規則。RewriteMap 本身完全沒有任何作用。

2)下面是你如何做到這一點(它不使用重寫映射 - 僅規則,這對於少量的重寫/重定向很好):

/page此規則將對 .進行單次精確重寫(內部重定向)/page.html。瀏覽器中的 URL 將保持不變。

<system.webServer>
   <rewrite>
       <rules>
           <rule name="SpecificRewrite" stopProcessing="true">
               <match url="^page$" />
               <action type="Rewrite" url="/page.html" />
           </rule>
       </rules>
   </rewrite>
</system.webServer>

此規則 #2 將執行與上述相同的操作,但將執行 301 重定向(永久重定向),其中 URL 將在瀏覽器中更改。

<system.webServer>
   <rewrite>
       <rules>
           <rule name="SpecificRedirect" stopProcessing="true">
               <match url="^page$" />
               <action type="Redirect" url="/page.html" />
           </rule>
       </rules>
   </rewrite>
</system.webServer>

如果存在帶有 .html 副檔名的此類文件,規則 #3 將嘗試對任何 URL 執行此類重寫(即,/page它將檢查是否/page.html存在,如果存在,則發生重寫):

<system.webServer>
   <rewrite>
       <rules>
           <rule name="DynamicRewrite" stopProcessing="true">
               <match url="(.*)" />
               <conditions>
                   <add input="{REQUEST_FILENAME}\.html" matchType="IsFile" />
               </conditions>
               <action type="Rewrite" url="/{R:1}.html" />
           </rule>
       </rules>
   </rewrite>
</system.webServer>

引用自:https://stackoverflow.com/questions/4410067