2012-12-13 3 views
0

J'utilise la réécriture d'URL pour mon site Web. J'ai fait des réglages sur IIS et cela fonctionne sur le serveur. Mais cela ne fonctionne pas sur localhost. C'est normal car il n'y a pas de page avec une URL réécrite dans mes fichiers de projet. Comment puis-je résoudre ce problème? J'utilise le serveur cassini quand je développe mon projet. Dois-je utiliser IIS local sur mon ordinateur? Vous pouvez voir ici mes rôles url rewriting dans le fichier web.config:La réécriture d'URL fonctionne sur IIS mais pas sur localhost

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" /> 
     <rewrite> 
      <outboundRules> 
       <rule name="OutboundRewriteUserFriendlyURL1" preCondition="ResponseIsHtml1"> 
        <match filterByTags="A, Form, Img" pattern="^(.*/)ProductDetail\.aspx\?prid=([^=&amp;]+)&amp;(?:amp;)?product=([^=&amp;]+)$" /> 
        <action type="Rewrite" value="{R:1}ProductDetail/{R:2}/{R:3}/" /> 
       </rule> 
       <preConditions> 
        <preCondition name="ResponseIsHtml1"> 
         <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> 
        </preCondition> 
       </preConditions> 
      </outboundRules> 
      <rules> 
       <rule name="RewriteUserFriendlyURL1" stopProcessing="true"> 
        <match url="^urun/([^/]+)/([^/]+)/?$" /> 
        <conditions> 
         <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
        </conditions> 
        <action type="Rewrite" url="ProductDetail.aspx?prid={R:1}&amp;product={R:2}" /> 
       </rule> 

      </rules> 
     </rewrite> 
     <urlCompression doDynamicCompression="false" /> 
    </system.webServer> 
+0

connexes: http://stackoverflow.com/q/2708187/1001985, http://stackoverflow.com/q/963545/1001985 – McGarnagle

Répondre

3

Pourquoi ne pas utiliser à la place Url de routage? c'est mieux

+0

Merci mon frère. Ça marche mieux :) – cagin

0

Oui, vous devez installer IIS sur votre ordinateur local en utilisant Ajout/Suppression de composants Windows.

Assurez-vous également d'activer le "module de réécriture d'URL" dans votre IIS local, une fois qu'il est installé.

0

Vous devez ajouter une condition négative <add input="{HTTP_HOST}" pattern="localhost" negate="true" /> afin que l'URL réécrire ignore les demandes sur localhost.

<rewrite> 
    <rules> 
    <rule name="HTTP to HTTPS redirect" stopProcessing="true"> 
     <match url="(.*)" /> 
     <conditions> 
     <add input="{HTTPS}" pattern="off" ignoreCase="true" /> 
     <add input="{HTTP_HOST}" pattern="localhost" negate="true" /> 
     </conditions> 
     <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" /> 
    </rule> 
    </rules> 
</rewrite> 
Questions connexes