web-dev-qa-db-fra.com

IIS Url Rewrite ne fonctionne pas pour IIS 8

Je viens de déplacer mon site Web sur un nouvel ordinateur qui utilise IIS 8 sur un a IIS 7.5. Tout sauf la réécriture d'URL fonctionne bien. il n'y a pas de message d'erreur que "HTTP Error 404.0 - Not Found" que j'ai eu. Ce que je viens de reconnaître, c’est qu’il y a une entrée comme RewriteModule (%SystemRoot%\system32\inetsrv\rewrite.dll) dans la page de paramétrage de modules> mais IIS 8 n’a pas le même module. Même si j'ai ajouté le même module à IIS 8, cela n'a pas fonctionné. Je serai heureux si je peux avoir quelques suggestions sur la façon de résoudre le problème. Plus d'informations peuvent être fournies sur demande.

J'espère que je pourrais exprimer ce que je veux dire correctement.

Merci d'avance,

alper

ps: les règles d'url fonctionnent bien ..

19
alper

tout d’abord, vous devez vérifier si réécrire l’URL fonctionne bien. Suivez cet exemple de tutoriel:

http://www.iis.net/learn/extensions/url-rewrite-module/using-failed-request-tracing-tacingtrace-rewrite-rules

Sinon, ouvrez IIS8 et vérifiez si l'icône de réécriture d'URL est affichée. Si ce n'est pas le cas, téléchargez msi à partir d'ici:

http://www.iis.net/downloads/Microsoft/url-rewrite

et réinstallez le module. Vous pouvez maintenant voir le module de réécriture d'URL dans le gestionnaire IIS lorsque vous vous trouvez sur le nœud racine (nœud du serveur), ainsi que sur les nœuds de sites Web et d'applications Web.

J'espère que ça aide!

6
Andrea Colabufalo

J'avais oublié d'ajouter les liaisons pour les domaines à rediriger depuis . E.g. La redirection vers https://www.example.com nécessite généralement les liaisons suivantes:

Ces règles de redirection ( de SO ont alors fonctionné pour moi:

<rule name="Redirect from non www" stopProcessing="true">
    <match url=".*" />
    <conditions>
      <add input="{HTTP_Host}" pattern="^example.com$" />
    </conditions>
    <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
  </rule>
  <rule name="Redirect from non https" stopProcessing="true">
    <match url=".*" />
    <conditions>
      <add input="{HTTPS}" pattern="^OFF$" />
      <add input="{HTTP_Host}" pattern="^www.example.com$" />
    </conditions>
    <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
  </rule>
3
Andi R

Pour moi, ma réécriture d'URL a fonctionné dans IIS7.5 mais pas dans IIS8

Le problème était le motif

Dans IIS7.5, le modèle était écrit comme suit: off

Dans IIS8, je devais le mettre à jour avec ^OFF$

2
MyDaftQuestions

J'ai passé quelques heures à résoudre ce problème. Il y a des étapes que j'ai suivies et j'ai bien fait fonctionner le module de réécriture.

  1. Réinstallez le module de réécriture. Si vous ne voyez pas ce module dans IIS et dans la liste des applications installées, mais que le programme d'installation réécrit indique qu'il est déjà installé, accédez au registre (HKLM/SOFTWARE/Microsoft/WINDOWS/CURRENTVERSION/Uninstall) et à. . Recherchez la chaîne de désinstallation et exécutez-la. Il va supprimer le module Rewrite et vous pouvez installer à partir de zéro. 
  2. Installez le module de routage des demandes d’application pour IIS.
  3. IMPORTANT! Si vous avez déjà web.config avec des règles, supprimez-les. Créez/ajoutez des règles via le menu IIS. De cette façon, IIS activera le module ARP qui est important.
2
Riddik

Cela a aidé à vérifier et à corriger les règles de réécriture. Je sais que cela a fonctionné plus tôt et je ne suis pas au courant de le changer.

1
Tomas Kubes

J'ai aussi eu ce problème… .. Comme l'OP l'a remarqué, le fichier .dll n'est pas enregistré. Le programme d’installation dit que tout va bien, l’icône de réécriture se trouve dans IIS Manager, mais cela ne fonctionne pas. Vérifiez que le fichier .dll est là (voir le chemin ci-dessous). Utilisez le bloc-notes Microsoft. Vraiment, je ne plaisante pas, il doit s'agir d'un bloc-notes Microsoft, pas même Visual Studio ne fonctionnera pour cela. Démarrez le bloc-notes en tant qu'administrateur et ouvrez C:\Windows\System32\inetsrv\Config\applicationHost.config.

Ajoutez la ligne suivante au noeud <globalModules>.

<add name="RewriteModule" image="%SystemRoot%\system32\inetsrv\rewrite.dll" />

Enregistrez et essayez vos règles maintenant.

En réalité, il doit s'agir du bloc-notes. Si vous essayez de modifier applicationHost.config sur un système 64 bits avec quoi que ce soit d'autre, vous vous arracherez les cheveux pendant des heures. Une des anomalies de fenêtres les plus étranges que j'ai jamais vues . http://weblog.west-wind.com/posts/2008/Aug/09/Editing-Applicationhostconfig-on-64-bit-Win2008http://dpotter.net/technical/2009/11/editing-applicationhostconfig-on-64-bit-windows/

1
user138720

Ouvrez IIS Manager> Server> Modules> Configure Native ModulesDans la liste, sélectionnez RewriteModule et cliquez sur OK.

IIS Config

Cela fonctionne pour moi.

1
user1940849

Je viens d'avoir un problème similaire après une mise à jour de Windows Service 2008 à Windows Service 2012 et, bien que je ne l'aie pas encore complètement testé, je n'ai fait que désinstaller/réinstaller le module de réécriture.

J'espère que cela aide tous ceux qui ont le même problème.

1
Sanction10

Vous pouvez essayer cette méthode. Après une petite recherche sur Google, vous n'êtes pas le seul à avoir ce problème -> http://forums.iis.net/t/1173537.aspx/1

0

Vérifiez également: Assurez-vous que ce paramètre est false car sinon, après la réécriture d'URL, l'URL sera réécrite, l'application .NET pourrait le réacheminer.

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
0
Ben H