Jump to content

url rewriting marche pas


Recommended Posts

Bonjour,

J'utilise un url rewriting sur mon site (grâce à Dan ;) ). Ca marchait très bien.

Mais j'ai ajouté une rubrique, et ça ne marche pas pour celle ci. Voici le htaccess, après j'explique les symptomes:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^mot-([a-z])\.htm$  /?mot=$1 [L]
RewriteRule ^section-([a-z-]+)\.htm$  /?section=$1 [L]
RewriteRule ^([a-z-]+)\.htm$  /?expression=$1 [L]
RewriteRule ^/menu/action-([a-z]+)\.php$  /?action=$1 [L]

En fait le problème vient de la dernière ligne le reste fonctionne bien.

Les trois premières lignes agissent sur des scripts/pages qui sont dans un même répertoire (chemin: index/premierRepertoire). Ca marche.

La dernière ligne agit sur des scripts qui sont dans un autre répertoire (chemin : index/autreRepertoire). ça marche pas. Les liens dans les pages sont du type action-proposer.php

pour la dernière ligne j'ai essayé:

action-([a-z]+)\.php$  /?action=$1 [L]

fonctionne pas

/action-([a-z]+)\.php$  /?action=$1 [L]

fonctionne pas

action-([a-z]+)\.php$  /?action=$1 [L]

fonctionne pas

J'ai essayé d'autre trucs aussi ( :fete: ) ça fonctionne pas plus pour la dernière ligne.

Au mieux ça m'affiche une page sans la feuille de style

Donc si y'a un légionnaire tout terrain de la programmation qui passe par là, je serais heureuse d'écouter son avis !

Merci d'avance

Link to comment
Share on other sites

"Fonctionne pas" ? Faut interpréter cela comment ? Page 404, erreur 500, rien du tout ?

Merci de préciser les symptômes parce qu'on ne va probablement pas recréer ton site à l'identique juste pour t'aider, non ?

Si cela fonctionne mais sans la feuille de style, c'est parce que tu changes virtuellement de répertoire ;)

Tu passes de /menu/ à / ;)

Donc il suffit d'utiliser une balise <base href="..."> dans le fichier exécuté à la racine (probablement index.php ?)

Link to comment
Share on other sites

Bonjour Dan,

Oui effectivement c'était un peu flou, j'étais fatiguée.

L'erreur que j'obtiens est effectivement une erreur 404.

En fait cela ne fonctionnait pas non plus même sans la feuille de style car le contenu n'était pas celui qu'il aurait dû être mais un contenu par défaut.

Vraiment je n'ai aucune piste, mais j'ai vraiment besoin d'y arriver.

Link to comment
Share on other sites

Pourquoi mets-tu un / devant /menu/action alors que tu ne le mets pas ailleurs ?

Pourquoi cette dernière règle veut convertir un fichier .php ? Ce n'est pas du .htm comme les autres ? :whistling:

J'imagine à lecture de tes règles que tu es chez OVH ? (à cause du / en second argument)

Remplace la dernière par:

RewriteRule menu/action-([a-z]+)\.(php|html?)$  /?action=$1 [L]

Il faudra mettre une balise <base href="..."> dans le <head> de index.php.

Dan

Link to comment
Share on other sites

Je suis chez ovh bien vu .

Pourquoi cette dernière règle veut convertir un fichier .php ? Ce n'est pas du .htm comme les autres ?

En fait toutes les pages sont en php j'ai mis htm sur les pages de contenu mais sur une page de formulaire ça fait bizarre alors j'ai laissé php.

Pourquoi mets-tu un / devant /menu/action alors que tu ne le mets pas ailleurs ?

Je viens d'essayer cette formule la effectivement y'a un changement: plus d'erreur 404 mais une page sans feuille de style et une erreur :

warting failed to open stream (../morceaux/connexions.php)

Il faudra mettre une balise <base href="..."> dans le <head> de index.php

là je n'ai pas compris.

Link to comment
Share on other sites

Donc la seule chose qui manque, comme annoncé, est une balise <base href="..."> dans le fichier index.php (ou celui qui est lancé par défaut lorsqu'on ne nomme que le répertire racine)

Cette balise permet de faire savoir au navigateur à partir d'où il faut résoudre les liens symboliques, comme ton

warting failed to open stream (../morceaux/connexions.php)

Le navigateur croit être dans le sous-répertoire /menu, alors qu'avec la réécriture il se trouve à la racine... de ce fait le répertoire ../morceaux/ n'exite pas ;)

Donc, mets la balise <base href=&quot;http://www.tondomaine.tld/"> dans le <head> de ton fichier index.php, et ce sera bon ;)

Une alternative serait de mettre tous les liens de ce fichier en absolu...

Link to comment
Share on other sites

ouh la je viens d'essayer cette solution y'a du changement, mais bon...

maintenant la page d'accueil ne retrouve plus le chemin pour certaines images et les liens sont tous brisés.

J'ai copié collé texto cette phrase dans le head de index.php <base href=&quot;http://www.tondomaine.tld/"> (en replacant tondomaine qd même)

Je comptais demander que l'on m'explique ce que fait ce lien, mais déjà je voudrais bien que ça fonctionne !

Déjà merci pour tes réponses Dan, je voudrais bien y arriver, ça avance lol

Link to comment
Share on other sites

oui ok je viens de lire la page merci pour le lien.

Cela étant je n'ai pas trop compris, donc j'explique comment c'est organisé:

1) J'ai une page index.php.

Cette page inclu au centre différentes parties de contenu selon la variable transmise par les liens. (les trois premières lignes de l'url rewriting). Ces parties de contenu sont dans le même répertoire. Tout fonctionne.

2) J'ai une page formulaire dans le répertoire "action". Cette page inclu aussi différentes parties selon la variable transmise par les liens (la dernière ligne de l'url rewriting) Toutes les parties à inclure dans la page formulaire sont dans le même répertoire action. Là ça ne fonctionne pas.

Donc si quelqu'un à la patience de m'expliquer quoi écrire où avec le tuyau que Dan m'a filé...

Merci d'avance

Link to comment
Share on other sites

Bon je vais avoir l'air un peu lourde mais bon faut bien débuter.

Sans m'écrire texto le truc, ça serait sympa si quelqu'un pouvait m'expliquer ces histoire de changement virtuel de répertoire.

Effectivement je viens de vérifier dans la page qui apparait en cliquant le lien qu'elle inclue le feuille de style de l'accueil et non celle de la page dans laquelle elle est censée être inclue.

là je sens que j'en ai pour la journée pfouu

Link to comment
Share on other sites

J'ai réussi !

En fait j'ai pulvérisé le répetoire à l'aide d'un missile "supprimer" puis j'ai transférer les fichiers rebelles à l'intérieur du répertoire base.

J'ai armé deux nouvelles variables et je les ai positionné dans la page d'index.

:fou:

ça marche. Normal c'est plus simple

Link to comment
Share on other sites

D'autant plus que nulle part dans tes règles de réécriture tu ne mentionnais le répertoire "action"... on aurait eu du mal à t'aider, non ?

Link to comment
Share on other sites

En fait je me suis emmêlée les pinceaux en changeant les noms des répertoires sur le vrai fichier htaccess et celui mentionné ici (dès fois qu'il y ait un petit malin que ça intéresse de trop près...).

Vous allez me dire de toute façon on connait pas le nom de site !

Alors je vais vous répondre : Surtout qu'en plus il est pas en ligne!

:fou:

trois précautions valent mieux qu'aucune, j'essaierai d'être plus rationnelle quand je m'y connaitrais plus.

Merci en tout cas pour les réponses !

Tiens y'a pas une section sécurité/piratage sur le Hub?

Edited by Boumbadaboum
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...