Bonjour à tous,

J'aurai besoin de renseignements concernant l'URL Rewriting.

J'ai un répertoire /occasions/ avec deux fichiers dedans :
- index.php (formulaire de recherche + liste voitures)
- fiche.php (page de détails sur une voiture)

Il n'y a aucun .htaccess dans ce répertoire pour le moment.

En développant ma page index.php, je me suis avancé en renseignant déjà les liens dit "propres" dans les att href avec ce format :
- http://www.domaine.fr/occasions/fiche/1-renault-megane-blablabla.html

Variable 1 : ID du véhicule
Le reste de l'URL n'est que pour du renseignement.

Le truc étant que sans avoir créé aucune règle de redirection, mes liens sont "fonctionnels", je veux dire par là que je ne suis pas renvoyé vers une page 404 alors que le lien est en fait fictif, le répertoire "fiche" n'existe pas...

Comment cela est-il possible ? Smiley eek

On pourrait se dire, c'est parfait, y'a rien à faire, ça fonctionne tout seul sans rien faire (le paradis quoi), mais en réalité, cela m'empeche d'utiliser ma variable ID pour générer dynamiquement la page vu qu'il n'existe pas de règle pour dire que le numero dans l'URL est ce dit ID.

J'ai tenté d'expliquer un maximum la structure, j'imagine que ce n'est peut être pas très clair, mais si quelqu'un pouvait me trouver une raison à cela, ça me donnerai une piste où chercher...

Une solution possible serait d'overwriter cette "auto" règle mais je me dépatouille pas trop bien avec les .htaccess, j'ai de belles erreurs 500...

Enfin bref.

Merci de l'éventuelle aide.

Apo.
Modifié par Apoooo (15 Mar 2012 - 08:14)
Modérateur
Y a-t-il un htaccess à la racine de ton site qui règle le problème d'url? Sinon le htaccess n'est qu'une config locale d'apache qui peut être faite directement dans un fichier. Mais l'administrateur du serveur peut régler tout ça dans la config d'apache. Le fichier httpd.conf sauf erreur mais je ne suis pas spécialiste serveurs...
Modérateur
As-tu essayé un print_r($_GET) pour voir si une autre conf faisait déjà le boulot? (et du coup trouver comment récupérer les infos)
Voici la ligne que tu dois mettre dans ton htaccess:

RewriteRule ^fiche/-([0-9])+[-0-9a-zA-Z_]+\.html$ fiche.php?id=$1 [L]

Concernant ton problème cela dépend de ta façon de traiter les erreurs 404.

Olivier.
Bonjour et merci de vos réponses !

@kustolovic :
Oui il y a un fichier .htaccess à la racine du site, qui gère l'ensemble des pages se trouvant justement à la racine. J'avais toujours compris qu'il fallait faire un .htaccess par répertoire d'où le fait que je stipulais qu'il n'y en avait pas dans mon dossier /occasions/.

J'avais déjà vérifié et il n'y aucune règle qui pourrait intéragir avec ceci dans le .htaccess qui se trouve à la racine.

Dans mes recherches de debogage, j'ai déjà fais un print_r($_GET) et le tableau est vide, il ne me retourne que "Array".

Concernant la manip du .conf pour apache, je ne pense pas y avoir accès sur un serveur mutualisé 1&1 si ?

@WebD :
En attendant une réponse sur mon topic, j'avais déjà entrepris de tenter de forcer ma redirection selon MA règle et non celle automatique, voici le .htaccess du répertoire :

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^fiche/([0-9]+)-([a-z0-9\-]+)\.html$   fiche.php?id=$1 [L]


Ma règle semble similaire à la tienne, sauf que je n'accepte pas les "_".


Je suis donc toujours dans l'impasse, j'ai un .htaccess qui ne veut pas être pris en compte alors qu'il est dans le dossier courant... et une autre règle est utilisée...

Merci toute fois pour vos réponses !

Apo.
Tu dis ne pas être redirigé vers une page 404 mais tu es redirigé vers quel page justement ? le index.php du répertoire ?

Sinon, il serait intéressant d'avoir le .htaccess de ton index pour être sûr que le soucis ne vient pas de là ?

En gros, 3 solutions :
Soit le .htaccess de l'accueil
Soit une config serveur (en mutu j'y crois pas trop)
Soit une erreur 404 qui redirige vers l'index.php par exemple (mais tu le serais).

Donc à mes yeux, à part le .htaccess en racine, je ne vois pas ...

De plus, concernant ton .htaccess, j'aurai fais ça un peu différemment :


Options +FollowSymlinks

RewriteEngine on
RewriteBase /occasions/

RewriteRule ^fiche/([0-9]+)-([a-z0-9\-]+)\.html$   /occasions/fiche.php?id=$1 [L]


Et au vue du code que tu fournis, il y a de forte chance que ton .htaccess à la racine en soit la cause.

Sinon, petit conseil ... renvoi le rewrite (paramètre $2) et vérifie que c'est le bon ...

Sinon, tu peux avoir des petits malins qui référencent volontairement ton URL modifié (vu que ton renault-megane-blablabla peut être remplacer par n'importe quoi et ça fonctionnera toujours). C'est ce qu'on appelle du Négative SEO et c'est très efficace pour flinguer un concurrent.
Modérateur
Apoooo a écrit :
J'avais toujours compris qu'il fallait faire un .htaccess par répertoire d'où le fait que je stipulais qu'il n'y en avait pas dans mon dossier /occasions/.

un htaccess dans un sous-répertoire écrasera le htaccess parent. Sinon le htaccess est valable pour les sous-répertoires.

Apoooo a écrit :
Concernant la manip du .conf pour apache, je ne pense pas y avoir accès sur un serveur mutualisé 1&1 si ?

Normalement pas en mutualisé et il y aurait un problème de sécurité sinon. C'est pour ça qu'il existe les htaccess.

Apoooo a écrit :
Je suis donc toujours dans l'impasse, j'ai un .htaccess qui ne veut pas être pris en compte alors qu'il est dans le dossier courant... et une autre règle est utilisée...

L'hébergeur qui peut configurer apache peut forcer des réglages et empêcher des réglages dans le htaccess.

erratum:

http://faq.1and1.fr/hebergements/htaccess/4.html

Visiblement 1&1 demande l'utilisation de rewritebase, peut-être à cause de leur config, l'as-tu essayé?
kenor a écrit :
Tu dis ne pas être redirigé vers une page 404 mais tu es redirigé vers quel page justement ? le index.php du répertoire ?


Je suis redirigé vers la bonne page : fiche.php. C'est comme-ci j'avais fais une règle de redirection sauf que ce n'est pas le cas, et donc je n'ai pas accès au passage des variables.

kenor a écrit :

Sinon, il serait intéressant d'avoir le .htaccess de ton index pour être sûr que le soucis ne vient pas de là ?


Je vous met mon .htaccess de l'accueil, avec un peu de honte car il n'est à mon avis pas très optimisé, j'aurais quelques modifs à revoir... :


Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www.domaine.fr$ [NC]
RewriteRule ^(.*)$  http://www.domaine.fr/$1  [L,R=301] 

# Redirections simples
RewriteRule ^contact\.html$  ./contact.php [L]

RewriteRule ^mentions-legales\.html$  ./mentions-legales.php [L]

RewriteRule ^le-groupe/historique-groupe-hacquart.html$  ./historique.php [L]

RewriteRule ^recrutement.html$  ./offres-emploi-automobile.php [L]

RewriteRule ^le-groupe/qui-sommes-nous.html$  ./qui-sommes-nous.php [L]

RewriteRule ^le-groupe/ou-nous-trouver.html$  ./ou-nous-trouver.php [L]

RewriteRule ^redirection/([a-zA-Z]+)-([0-9]+)-([0-9]+).html$   ./frame.php?&id=$2&logo=$3 [L]

RewriteRule ^redirection/journaux/([a-zA-Z]+)-([0-9]+)-([0-9]+).html$   ./frame.php?id=$2&logo=$3 [L]

RewriteRule ^occasions/entretien.html$  ./entretien.php [L]

[b]RewriteRule ^occasions/fiche/([0-9]+)-([a-z0-9\-]+)\.html$   ./occasions/fiche.php?id=$1&vehicule=$2 [L][/b]

RewriteRule ^financement/complementaire-automobile.html$  ./complementaire-automobile.php [L]

RewriteRule ^renault/extension-de-garantie/$  ./renault/garantie.php [L]

RewriteRule ^renault/plan/$ ./renault/itineraire.php [L]

RewriteRule ^renault/apres-vente/$ ./renault/apres-vente.php [L]

RewriteRule ^dacia/plan/$ ./dacia/itineraire.php [L]

RewriteRule ^dacia/apres-vente/$ ./dacia/apres-vente.php [L]

RewriteRule ^mazda/plan/$ ./mazda/itineraire.php [L]

RewriteRule ^mazda/apres-vente/$ ./mazda/apres-vente.php [L]

RewriteRule ^kia/plan/$ ./kia/itineraire.php [L]

RewriteRule ^kia/apres-vente/$ ./kia/apres-vente.php [L]

RewriteRule ^nissan/plan/$ ./nissan/itineraire.php [L]

RewriteRule ^nissan/apres-vente/$ ./nissan/apres-vente.php [L]

RewriteRule ^chevrolet/plan/$ ./chevrolet/itineraire.php [L]

RewriteRule ^chevrolet/apres-vente/$ ./chevrolet/apres-vente.php [L]

RewriteRule ^ardennes-auto-discount/$ ./aad/ [L]

RewriteRule ^ardennes-auto-discount/plan/$ ./aad/itineraire.php [L]


Ceci est mon .htaccess actuel, la ligne souligné est d'aujourd'hui, ce n'est donc pas elle qui me fais avoir le problème vu qu'elle n'y était pas avant ! Je l'ai mise pensant outrepasser cette redirection automatique...

kenor a écrit :
De plus, concernant ton .htaccess, j'aurai fais ça un peu différemment


Tu m'as fais espéré ! Smiley murf J'avais oublié que sur 1&1, il fallait mettre RewriteBase, je l'avais déjà oublié au tout debut pour mon htaccess à la racine... Mais même avec cette modification, toujours le même soucis. (En vidant le cache, fermant le navigateur etc...)


kenor a écrit :
C'est ce qu'on appelle du Négative SEO et c'est très efficace pour flinguer un concurrent.


Ah ! Je ne connaissais pas ! Merci de l'info, j'avou que c'est même très important... Je ferais une redirection 404 après verif si quelqu'un rentre n'importe quoi.

kustolovic a écrit :
un htaccess dans un sous-répertoire écrasera le htaccess parent. Sinon le htaccess est valable pour les sous-répertoires.


C'est également ce que je pensais au tout debut, d'où mon incompréhension lorsque je vois une règle s'effectuée tout seul sans même l'avoir déclarée dans aucun .htaccess !


Petite question, cela ne viendrait-il pas d'une correction automatique des liens par hasard ?

Je m'explique :
- Si je rentre : www.domaine.fr/occaasions/
=> Ca modifie tout seul en www.domaine.fr/occasions/

Par ce principe, le serveur ne ferait-il pas un rapprochement entre le répertoire virtuel "fiche" de l'URL avec le nom du fichier fiche.php ?

Encore merci à vous de vous penchez sur le sujet...

Kévin.
Modifié par Apooo (14 Mar 2012 - 20:16)
Alléluiaaaa !!

C'était effectivement ce dont j'ai parlé en fin de post. Mon URL Rewriting est en fait semi-auto, par je ne sait quelle directive malheureusement...

Il y a donc en réalité une sémantique logique entre les noms des fichiers et les répertoires virtuels que l'on nomme.

Exemple :
+ occasions/
|- fiche.php
|- index.php

Lien sur index.php : fiche/page.html

Le navigateur redirige sur fiche.php tout en réécrivant l'URL comme indiqué dans le lien et cela sans aucune RewriteRule.

Bon à savoir !

Encore merci à vous 3 d'avoir tenté de m'aider et merci également pour l'information concernant le Negative SEO, ça me sera fortement utile !

Bonne soirée à vous.

Kévin.
Modifié par Apooo (14 Mar 2012 - 21:24)
Et par la même occasion, je viens de voir que j'ai un autre compte Alsa sans le savoir, je devais m'être perdu dans le nombre de "o" ^^

Un modérateur pour me supprimer le compte ?

Merci bien.
Si ton soucis est résolu, tant mieux Smiley smile

juste le signe | (au niveau du 6) signifie "ou".


RewriteRule ^(dacia|mazda)/apres-vente/$ ./$1/apres-vente.php [L]


(si itineraire.php s'appelait plan.php, tu pourrais également faire (apres-vente|plan) > $2.php)