Domanda

Tutto quello che voglio fare è 301 Reindirizza da vecchi URL a nuovi URL:

Da /xx/yy/somefile.html a /xx/yy/somefile.aspx

Alcuni esempi di seguito:

add key="/products/DSD-72B-SP-summary.html" value="/products/DSD-72B-SP-summary.aspx" 
add key="/products/DSD-72B-SP-detail" value="/products/DSD-72B-SP-detail.aspx" 
add key="index.html" value="default.aspx" 
add key="/product-selector.html" value="/products.aspx" 
.

Questo è tutto tranne che non sembra voler lavorare in IIS 7.5 con URL Rewrite 2.0.

Ho provato almeno 10-20 diverse regole e riscriviti i formati della mappa senza fortuna. In effetti ho fatto così tante volte che ho dovuto pulire le regole e le mappe di IIS e il file di ricopia totalmente un file web.config da un backup per svitare ciò che ho ferito per provare a farlo funzionare.

Tutto ciò di cui ho bisogno è una regola semplice che dice IIS che se riceve una richiesta per un file * .html per visualizzare il file * .aspx che ha sostituito il file HTML.

    <?xml version="1.0" encoding="UTF-8"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <appSettings configProtectionProvider="DataProtectionConfigurationProvider">
    <EncryptedData>
      <CipherData>

      </CipherData>
    </EncryptedData>
  </appSettings>
  <connectionStrings configProtectionProvider="DataProtectionConfigurationProvider">
    <EncryptedData>
      <CipherData>

      </CipherData>
    </EncryptedData>
  </connectionStrings>

  <system.web>

    <customErrors mode="On" defaultRedirect="404-NotFound.aspx">
      <error statusCode="404" redirect="404-NotFound.aspx" />
      <!--<error statusCode="403" redirect=""/>-->
    </customErrors>

    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0">
            <!--<codeSubDirectories>
                <add directoryName="CSharp"/>
                <add directoryName="VB"/>
            </codeSubDirectories>-->
        </compilation>
    <authentication mode="Forms">

    </authentication>

    <membership>
      <providers>
        <clear />

      </providers>
    </membership>

    <profile>
      <providers>
        <clear />

      </providers>
    </profile>

    <roleManager enabled="false">
      <providers>
        <clear />

      </providers>
    </roleManager>

  </system.web>

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true">

        </modules>

        <defaultDocument>
            <files>

            </files>
        </defaultDocument>


    <httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL">
      <remove statusCode="404" subStatusCode="-1" />
      <error statusCode="404" path="/404-NotFound.aspx" responseMode="ExecuteURL" />
    </httpErrors>
        <tracing>
            <traceFailedRequests>
                <add path="*">
                    <traceAreas>
                        <add provider="WWW Server" areas="Rewrite" verbosity="Verbose" />
                    </traceAreas>
                    <failureDefinitions statusCodes="200-500" />
                </add>
            </traceFailedRequests>
        </tracing>

  </system.webServer>
</configuration>
.

È stato utile?

Soluzione

Assicurati di cancellare anche la cache.A volte è possibile aggiornare una regola del server, ma il tuo browser continuerà a mostrare la vecchia pagina.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
        <rules> 
            <rule name="Vanity URL" enabled="true">
                 <match url=".*" />
                 <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                     <add input="{MAPNAME:{PATH_INFO}}" pattern="(.+)" />
                 </conditions>
                 <action type="Redirect" url="{C:1}" appendQueryString="false" />
            </rule>
        </rules>
        <rewriteMaps>
            <rewriteMap name="MAPNAME">
                <add key="/products/DSD-72B-SP-summary.html" value="/products/DSD-72B-SP-summary.aspx" />
        </rewriteMap>
    </rewrite>
</system.webServer>
</configuration>
.

Il codice sopra riportato che prende direttamente dal mio sito web con modifiche minori dei nomi per la generalità e aggiunta nella pagina.Prova a rimuovere altre regole e isolare il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top