Bonjour

J'ai utilisé les sources Graphikart du tutoriel "Décomposer son site en PHP" pour créer un site utilisant un .htaccess pour l'urlRewriting. Seulement après avoir finit mon site et testé avec succès en local sur serveur Apache (avec WAMP), mon site ne fonctionnait plus en ligne sur un Serveur tournant sous Windows server 2008 et IIS.
Le site est donc construit sur le système d'un index.php appelant une page template.php ainsi que le contenu appelé grâce à une variable $_GET'p'], avec donc le .htaccess qui me réécrit l'url. Seulement une fois en ligne, j'ai dut définir une variable $_SERVER'DOCUMENT_ROOT'] afin de récuperer mon CSS entre autre mais voilà, à l'appel de mes pages via le menu, seule le contenu s'affiche sans le template, seul la page d'accueil au démarrage s'affiche correctement.
Etant encore novice dans le domaine (et faisant du copier/coller du code sans vraiment le comprendre au début...), je me suis creusé les méninges et fouillé dans Google pour trouver une explication et j'ai crut comprendre que IIS n'interprétait pas les .htaccess et du coup mon urlRewriting. Apparemment l'alternative serait d'utiliser un fichier httpd.ini et non un .htaccess(fonctionnement par Isapi Rewrite...) comme alternative mais je ne suis pas sûr et bien sur, n'y connait rien (pour le moment...).

Seulement le manque de temps et les délais m'empêche de m'attarder sur le sujet, du coup j'appelle à l'aide pour savoir si quelqu'un connaîtrais l'alternative pour IIS à l'urlRewriting.

.htacces :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?p=$1 [QSA,L]

index.php :

<?php
include "config.php";
define("WEBROOT","content/");
define("ABSOLUTE","http:///*chemin absolue du site*/.com/");
if(!isset($_GET"p"])){ $_GET"p"]="index"; }
if(!file_exists("content/".$_GET"p"].".php")){ $_GET"p"]="404"; }
ob_start();
include "content/".$_GET"p"].".php";
$content = ob_get_contents();
ob_end_clean();
include "template.php";
echo$_GET"p"];
?>

Les page de contenu sont des fichiers html contenu dans un dossier "content".

Je commence à chercher de mon coté mais si quelqu'un est plus rapide que moi, je lui en serai éternellement reconnaissant.

Merci d'avance.

6 réponses


Bonsoir,

Juste une question, le module rewrite est-il activé?
Car techniquement, rien n'empêche l'url rewriting sur les serveur windows, sinon beaucoup de site seraient assez gêné :/

Salut efrara,

as-tu résolu ton problème depuis le temps ? J'ai le même problème que toi en fait, je travaille sur une application "de loin pas finie mais bon "qui est prévue au final pour être installée sur l'intranet de mon boulot et ils utilisent aussi IIS donc l'url-rewriting sans htaccess.

sorry c'est un ancien mail mais je tente le coup :)

<?xml version="1.0" encoding="UTF-8"?>
    <configuration>
         <system.webServer>
             <rewrite>
                 <rules>
                     <rule name="Imported Rule 1" stopProcessing="true">
                         <match url="^.*$" />
                         <conditions logicalGrouping="MatchAny">
                             <add input="{REQUEST_FILENAME}"
                                 matchType="IsFile" pattern=""
                                 ignoreCase="false" />
                             <add input="{REQUEST_FILENAME}"
                                 matchType="IsDirectory"
                                 pattern="" ignoreCase="false" />
                         </conditions>
                         <action type="None" />
                     </rule>
                     <rule name="Imported Rule 2" stopProcessing="true">
                         <match url="^.*$" />
                         <action type="Rewrite" url="index.php" />
                     </rule>
                 </rules>
             </rewrite>
         </system.webServer>
    </configuration>

donc en gros je dois utiliser un fichier xml pour remplacer mon .htaccess
je vois que matchtype reconnais si on a un fichier ou un répertoire ..... et ou faut-il placer ce fichier ?
au même endroit ou je mettrais le .htaccess ?
je vais voir en installant IIS en local sur windows7

déjà merci de ton aide

Pour compléter la réponse de ferdikam. Le fichier doit être placé à l'endroit où tu enregistrerais ton .htaccess et doit se nommer web.config pour être interpréter par IIS.

ok merci pour l'info,
je teste dès que possible (on gros dès que le noyau est fonctionnel