Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2011-12-27 22:14:54

je-mattarde
Membre
Lieu : Au bistrot
Inscription : 2011-07-29
Site Web

Règles de réécriture en XML

Bonjour !

Je souhaite changer la méthode de lecture de l'URL (du mode QUERY STRING au mode PATH INFO) dans Dotclear sans casser mes liens existants. Pour bien faire, comme j'ai pu le lire dans la documentation, il est possible de rediriger les pages avec les codes suivants dans un fichier .htaccess

# Rewrite old QUERY_STRING urls
RewriteCond %{QUERY_STRING} !^$
RewriteRule ^index.php$ %{QUERY_STRING}? [R=301,L]

# Get nice URLs with DotClear 2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php/$1
RewriteRule ^index.php$  index.php/ [L]

Manque de bol, chez mon hébergeur (hébergement Windows de IKOULA) les règles de réécriture se font en XML dans un fichier web.config de mon site web comme précisé ici.

Pourriez vous donc m'aider à convertir les règles ci-dessus en langage XML pour les modules d'URL rewriting de IIS 7 ?

Je ne sais pas comment procéder.


Gilles

Hors ligne

#2 2011-12-28 08:43:41

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Règles de réécriture en XML

Hello,

Je tente un essai :

<rewrite>
  <rules>
    <rule name="Rewrite old QUERY_STRING urls">
      <match url="^index.php$" />
      <conditions>
        <add input="{QUERY_STRING}" pattern="^$" negate="true" />
      </conditions>
      <action type="Rewrite" url="%{QUERY_STRING}?" />
    </rule>
    <rule name="Get nice URLs with Dotclear 2">
      <match url="(.*)" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
      </conditions>
      <action type="Rewrite" url="index.php/{R.1}" />
    </rule>
    <rule name="Get nice Index URLs with Dotclear 2">
      <match url="^index.php$" />
      <action type="Rewrite" url="index.php/" />
    </rule>
  </rules>
</rewrite>

Hors ligne

#3 2011-12-28 12:51:17

je-mattarde
Membre
Lieu : Au bistrot
Inscription : 2011-07-29
Site Web

Re : Règles de réécriture en XML

Hola,
Merci annso de te pencher dessus!

Ton premier essai a abouti à : 500 - Internal server error en actualisant ma page principale et les autres par la même occasion.
Je me suis contenté de passer du mode QUERY STRING au mode PATH INFO, puis de créer un fichier web.config à la racine du site, et d'y ajouter les règles XML.

J'essaie de trouver une erreur dans ta transposition du code en comparant les deux, et je ne vois pas d'erreurs flagrantes.... Voilà une remarque utile puisque je ne maitrise ni le langage XML, ni l'autre d'ailleurs. ;-)   

Je vais me documenter un peu sur les syntaxes.


Gilles

Hors ligne

#4 2011-12-28 13:04:32

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Règles de réécriture en XML

Je ne suis pas convaincue par ma traduction de la première règle (Rewrite old QUERY_STRING urls). Tu peux peut être déjà essayer sans ?
Sinon, il faudrait peut être mieux demander à ton hébergeur qui doit avoir l'habitude d'écrire de telles règles.

Hors ligne

#5 2011-12-28 13:06:28

annso
Responsable de la machine à Twix
Lieu : Lyon
Inscription : 2006-03-05
Site Web

Re : Règles de réécriture en XML

Par ailleurs, peut-être a tu accès à ce module d'import de règles Apache : http://learn.iis.net/page.aspx/470/impo … ite-rules/

Hors ligne

#6 2011-12-28 16:48:09

je-mattarde
Membre
Lieu : Au bistrot
Inscription : 2011-07-29
Site Web

Re : Règles de réécriture en XML

Je n'ai pas accès à ce module d'import donc c'était l'occasion de tester le support technique de mon hébergeur comme tu me l'as conseillé.
Rapide les bougres. Ils ont passé les codes apache dans la moulinette de l'utilitaire URL Rewrite Module et, ils m'ont envoyé ceci :

<rewrite>
  <rules>
    <rule name="Imported Rule 1" stopProcessing="true">
      <match url="^index.php$" ignoreCase="false" />
      <conditions>
        <!--# Rewrite old QUERY_STRING urls-->
        <add input="{QUERY_STRING}" pattern="^$" ignoreCase="false" negate="true" />
      </conditions>
      <action type="Redirect" redirectType="Permanent" url="{QUERY_STRING}?" appendQueryString="false" />
    </rule>
    <rule name="Imported Rule 2">
      <match url="(.*)" ignoreCase="false" />
      <conditions>
        <!--# Get nice URLs with DotClear 2-->
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
      </conditions>
      <action type="Rewrite" url="index.php/{R:1}" />
    </rule>
    <rule name="Imported Rule 3" stopProcessing="true">
      <match url="^index.php$" ignoreCase="false" />
      <action type="Rewrite" url="index.php/" />
    </rule>
  </rules>
</rewrite>

J'ai testé. Plus d'erreur 500.
Mais... les références (externes ou internes) aux anciens liens retombent tous sur la page d'accueil de mon site au lieu de diriger vers les nouvelles adresses PATH_INFO.

Je remarque que je me trouve confronté au même souci qui est décrit dans ce topic à la différence que je veux utiliser la méthode PATH_INFO.

J'essaye de contacter par mail Mattkltz qui s'était proposé (il y a un moment) dans ce topic de créer une page dans la documentation à ce sujet : http://fr.dotclear.org/documentation/2. … nstall/iis

Quelle aventure trépidante..!


Gilles

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map