Redirection lien facebook (langue)

Nouveau WRInaute
Bonjour,

J'ai des erreurs 404 pour des pages qui n'existent pas lorsque des liens sont fait depuis Facebook.
Je ne sais pas vraiment pourquoi mais il veux qu'un fichier de langue (locale) soit déclaré.
Mon site n'étant pas (encore) multilingue je voudrais éviter ces erreurs.

Les liens se termine par : ?fb_locale=fr_FR

Pourriez vous m'aider à faire en sorte que n'importe quelle url contenant ce paramètre (à priori toujours à la fin) ne soit pas pris en compte et soit redirigé vers la page demandé sans ce paramètre ?

Exemple : www.site.com/page1/page?fb_locale=fr_FR pointe vers www.site.com/page1/page

D'avance merci.
 
Nouveau WRInaute
Je ne suis pas spécialiste mais moi je mettrais dans le htaccess quelque chose du genre

Code:
RedirectPermanent /page1/(.*)\?fb_locale=fr_FR$  www.site.com/page1/$1  [R=301,L]

A tester ...
 
Nouveau WRInaute
Bonsoir,

Merci d'avoir répondu.
J'ai testé mais cela ne fonctionne pas.

Petite précision par rapport à mon exemple, en fait je voudrais supprimer de l'url demandée le : ?fb_locale=fr_FR
afin de ne pas rendre indisponible la page réellement demandée.

Exemple : si http://www.site.com?fb_locale=fr_FR est demandé alors http://www.site.com est donné
ça c'est bon et mis en place.

Exemple 2 : si http://www.site.com/page?fb_locale=fr_FR est demandé alors http://www.site.com/page est donné
Exemple 3 : si http://www.site.com/page/page?fb_locale=fr_FR est demandé alors http://www.site.com/page/page est donné
etc...

"page" n'étant pas figé.

C'est la ou je bloque.

Merci pour votre aide.
 
WRInaute accro
Normalement ce qui est a droite du ? ne devrait pas être pris en compte par ton système puisque c'est l'énoncé d'une suite de paramètre en GET à transmettre au script pointé par l'url. (comprendre que tes deux exemples sont une seule et unique url)
Ce qui me fait penser que le problème n'est pas de supprimer cela mais de rétablir le fonctionnement normal ...
Ce que je comprend de ta recherche c'est que tu tente de patcher un défaut de conception ce qui est pire que de corriger le défaut.

Sinon a savoir, pour donner un exemple il faut utiliser l'url http://www.example.com et non pas "www.site.com"
 
Nouveau WRInaute
Bonjour,

Je prend note pour l'exemple.

De mon point de vue ce n'est pas un défaut dans le sens ou ce site n'est pas multi-langue donc je n'ai pas pris en compte ce de paramètre. Maintenant à priori et cela viendrait de Facebook, lorsqu'un lien est fait il doit être possible de préciser la langue et donc il rajoute ce paramètre qui chez moi provoque des erreurs 404 et rend inutilisable le lien demandé. Ce que je cherche à faire en supprimant ce paramètre c'est juste rendre la vue du lien même si il y'à ce paramètre.
 
WRInaute accro
js13 a dit:
De mon point de vue ce n'est pas un défaut dans le sens ou ce site n'est pas (...) Ce que je cherche à faire en supprimant ce paramètre c'est juste rendre la vue du lien même si il y'à ce paramètre.
Bah si c'est un défaut justement ...
Je passe sur le fait que FB balance des paramètres a la con c'est pas le sujet (ils sont lourd avec ça et c'est pas le seul cas que je connaisse)

mais dans le principe et la norme web :

http://www.example.com/dossier/page.truc
et :
http://www.example.com/dossier/page.truc?param=valeur
Doivent être traités de la même façon. C'est a dire être géré par les script "page.truc" dans le dossier "dossier".
Dans ton cas tu as surement des dossier virtuels comme quasi tout le monde et pour cela tu dois utiliser des règles de réécriture pour gérer la production de contenu. Ton défaut est que tes règles prennent en compte les paramètre GET dans la recherche du contenu demandé. Il faut donc intervenir a ce niveau pour isoler le script de se comportement et non pas rediriger l'url pourrie vers la bonne.

Comprend que si tu prend le problème comme tu le pose que se passera t'il si demains si je fais des liens comme ça vers ton site :

http://www.example.com/dossier/page.truc?param=valeur
http://www.example.com/dossier/page.truc?autre_param=valeur
http://www.example.com/dossier/page.truc?encor_un_param=valeur

etc ...
Tu va ajouter des règles a chaque fois ?

Et pourtant tu dois conserver la possibilité de passer des paramètres ... (au cas ou ou pour un fonctionnement existant) En l'espèce on se moque totalement de savoir si c'est un paramètre linguistique ou pas.
 
WRInaute accro
js13 a dit:
Non ça ce ne sont pas des paramètres, enfin si mais pas dans la norme.
Quoi qu'il en soit ton site a une règle dans le htaccess qui permet de dire que "blog/mon-titre/page/2" ou "blog/mon-titre" correspond a la page X il faut juste que le script qui gère ça (derrière le htaccess) vire ce qui est a droite du "?" ("?" compris) avant de chercher le contenu et de fabriquer la page. C'est l'histoire d'une ligne de code faut pas agir sur le htaccess pour ça.
 
Nouveau WRInaute
Ok merci pour la piste je vais regarder comment m'y prendre.

Effectivement mon htaccess est "presque" vide :

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [QSA]

Tout se passe dans le code.
 
WRInaute accro
js13 a dit:
RewriteRule ^(.*)$ index.php?$1 [QSA]
C'est ce que je pensais ...
En fait ton htaccess envoie sur "index.php" toutes les requêtes qui ne correspondent pas a un fichier physique. C'est "comme" une gestion de 404 (en version simplifiée)
Donc ton script frontal "index.php" est chargé de gérer les url et de produire le contenu c'est là qu'il faut intervenir sur la variable qui analyse l'url pour filtrer les trucs qui te dérangent je pense.
 
Discussions similaires
Haut