1) Twój istniejący web.config: zadeklarowałeś przepisanie mapy .. ale nie utworzyłeś żadnych reguł, które będą z niego korzystać. RewriteMap na własną rękę nie robi absolutnie nic.
2) Poniżej jest to, jak można to zrobić (nie wykorzystują mapy przepisywania - tylko zasady, co jest dobre dla małej ilości przepisuje/przekierowywane):
Zasada ta zrobi SINGLE EXACT przepisać (wewnętrzne przekierowanie) /page
do /page.html
. URL w przeglądarce pozostanie niezmieniony.
<system.webServer>
<rewrite>
<rules>
<rule name="SpecificRewrite" stopProcessing="true">
<match url="^page$" />
<action type="Rewrite" url="/page.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
Ta zasada nr 2 zrobi to samo co powyżej, ale będzie zrobić przekierowanie 301 (stałe przekierowanie), gdzie URL zmieni w przeglądarce.
<system.webServer>
<rewrite>
<rules>
<rule name="SpecificRedirect" stopProcessing="true">
<match url="^page$" />
<action type="Redirect" url="/page.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
Zasada # 3 będzie próbował wykonać taką przeróbkę dla dowolnego adresu URL, jeśli istnieje taki plik z rozszerzeniem .html (tj /page
będzie sprawdzić, czy /page.html
istnieje, a jeśli to nie nastąpi, a następnie przepisać):
<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>
Zawsze, chociaż nie mogę tego teraz używać ... ale na przyszłość, a może i pomagać innym :) –