Je ne suis pas sûr que ce titre ait un sens, mais pour l'expliquer plus en détail, j'ai un site Web où chaque requête doit accéder à mon fichier appelé controller.php.IIS - Réécriture d'URL ne fonctionnant pas lorsque l'URL contient le mot 'data'
Cela fait quelque temps que je travaille sur ce site. Aujourd'hui, un nouveau répertoire contenant des fichiers PDF a été ajouté au site. Actuellement, il y a deux fichiers dans ce répertoire qui sont accessibles via des liens hypertexte.
Les deux chemins relatifs je suis accès sont: http://q360help.joehelp.com/Docs/Document_Grid_Filters.pdf
qui redirige correctement:
http://q360help.joehelp.com/controller.php?Docs/Document_Grid_Filters.pdf
ET
http://q360help.joehelp.com/Docs/SERVERDATA.pdf
qui est censé à, mais ne redirige pas à:
http://q360help.joehelp.com/controller.php?Docs/SERVERDATA.pdf
Au lieu de cela, j'obtiens une erreur 404 qui est attendue en essayant d'accéder à tout ce qui ne passe pas par le contrôleur. Lorsque j'ajoute manuellement controller.php à l'URL, le fichier se charge correctement. Je suis juste curieux de savoir pourquoi il ne redirige pas correctement. Chaque autre fichier pdf dans tous les autres répertoires fonctionne correctement.
Voici mon fichier web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpRedirect enabled="false" destination="" />
<rewrite>
<rules>
<rule name="controller redirect" enabled="true" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(http://)?(www.)?joehelp.com" negate="true" />
<add input="{HTTP_HOST}" matchType="Pattern" pattern="^(http://)?(www.)?q360help.joehelp.com$" ignoreCase="true" negate="false" />
<add input="{URL}" pattern="Data/*" negate="true" />
<add input="{URL}" pattern="Skins/*" negate="true" />
<add input="{URL}" pattern="Resources/*" negate="true" />
<add input="{PATH_INFO}" pattern="^/controller.php*$" negate="true" />
</conditions>
<action type="Redirect" url="/controller.php?{R:0}" />
</rule>
</rules>
</rewrite>
<httpErrors errorMode="Detailed" />
</system.webServer>
EDIT: Lors de tests supplémentaires, il semble que d'avoir le mot « données » partout dans l'URL est ce qui cause cette rupture. Est-ce une chose? Je n'ai jamais entendu parler de quelque chose comme ça et en utilisant le testeur de modèle URL Redirect via l'interface graphique dans IIS indique que l'URL devrait rediriger.
À ce stade, ma solution de contournement consiste à modifier le nom du fichier afin qu'il ne possède pas de «données», mais je suis curieux de savoir pourquoi cela se produit.
génial merci! – jprice92