8768 sujets

Développement web côté serveur, CMS

Pages :
Modérateur
Bonjour,

Je fais de la réécriture d'url, sur un hébergement ovh, en incluant dans le fichier .htaccess à la racine de l'hébergement les lignes suivantes :


#--------------------------------------------------
# URL Rewriting
#--------------------------------------------------

Options +FollowSymlinks
RewriteEngine on

# Rewrite rules
#-----------------------------

# FR rewrite
RewriteRule ^references/(ref[0-9]{4})$                  index.php?page=references&lang=fr&ref=$1 [L]
RewriteRule ^references[/]{0,1}$                        index.php?page=references&lang=fr [L]
RewriteRule ^prestations-missions[/]{0,1}$              index.php?page=services&lang=fr [L]
RewriteRule ^reseau[/]{0,1}$                            index.php?page=network&lang=fr [L]
RewriteRule ^actualites[/]{0,1}$                        index.php?page=news&lang=fr [L]
RewriteRule ^contact[/]{0,1}$                           index.php?page=contact&lang=fr [L]
RewriteRule ^mentions-legales[/]{0,1}$                  index.php?page=imprint&lang=fr [L]

### OTHER Languages rewrite ###
RewriteRule ^([a-z]{2})[/]{0,1}$                                index.php?page=home&lang=$1 [L]

# EN rewrite
RewriteRule ^([a-z]{2})/references/(ref[0-9]{4})$               index.php?page=references&lang=$1&ref=$2 [L]
RewriteRule ^([a-z]{2})/references[/]{0,1}$                     index.php?page=references&lang=$1 [L]
RewriteRule ^([a-z]{2})/services-missions[/]{0,1}$              index.php?page=services&lang=$1 [L]
RewriteRule ^([a-z]{2})/network[/]{0,1}$                        index.php?page=network&lang=$1 [L]
RewriteRule ^([a-z]{2})/news[/]{0,1}$                           index.php?page=news&lang=$1 [L]
RewriteRule ^([a-z]{2})/contact[/]{0,1}$                        index.php?page=contact&lang=$1 [L]
RewriteRule ^([a-z]{2})/imprint[/]{0,1}$                        index.php?page=imprint&lang=$1 [L]

# DE rewrite
RewriteRule ^([a-z]{2})/referenzen/(ref[0-9]{4})$               index.php?page=references&lang=$1&ref=$2 [L]
RewriteRule ^([a-z]{2})/referenzen[/]{0,1}$                     index.php?page=references&lang=$1 [L]
RewriteRule ^([a-z]{2})/leistungen-auftrage[/]{0,1}$            index.php?page=services&lang=$1 [L]
RewriteRule ^([a-z]{2})/netz[/]{0,1}$                           index.php?page=network&lang=$1 [L]
RewriteRule ^([a-z]{2})/aktualitaten[/]{0,1}$                   index.php?page=news&lang=$1 [L]
RewriteRule ^([a-z]{2})/kontakt[/]{0,1}$                        index.php?page=contact&lang=$1 [L]
RewriteRule ^([a-z]{2})/impressum[/]{0,1}$                      index.php?page=imprint&lang=$1 [L]


En local tout se passe bien, mais sur le site de production j'ai des adresses avec double slash, par exemple http://fox-zooconsulting.com//prestations-missions , quand je clique sur un élément du menu haut. La page s'affiche correctement. Comme dit auparavant, je n'ai pas ce problème en local. Les liens du menu pointent pourtant bien sur la bonne adresse (http://fox-zooconsulting.com/prestations-missions).
Le double slash se trouve après le nom de domaine, je pense qu'il faudrait indiquer le nom de domaine de base (http://fox-zooconsulting.com/), mais je ne sais pas comment faire, je ne trouve pas l'information sur le Web...

Merci d'avance pour votre coup de pouce. Smiley smile
Modifié par jojaba (15 Sep 2015 - 09:10)
Modérateur
J'ai tenté avec un slash devant la deuxième partie de la règle de réécriture (devant le index.php) mais ça ne fonctionne pas mieux.

RewriteRule ^references/(ref[0-9]{4})$                  /index.php?page=references&lang=fr&ref=$1 [L]

Modifié par jojaba (13 Sep 2015 - 07:57)
N'y aurait-il une solution générale de ce côté-ci ?
https://developer.mozilla.org/fr/docs/Web/HTML/Element/base
qui considère, en intégrant dans le <head></head>
<base href="http://fox-zooconsulting.com/">
avec nécessairement un / (slash) en fin d'url

Mais sans autre / (slash) ensuite ?

Edite ton post parce que ton url avec 'double slash' inclus contient l'accolade de fermeture ')', ce qui rend impossible ton exemple de 'double slash' ...

Ceci dit ta proposition de bon affichage m'apparaît improbable malgré que le 'double slash' apparaisse effectivement dans l'url de ton site que j'ai visité à la page prestations-missions (sans extension : là, j'apprends quelque chose ! (avec Chrome)).
Modifié par pictural (15 Sep 2015 - 08:42)
Modérateur
Ça fonctionne avec double-slash parce que je fais de la réécriture d'url.
L'erreur vient des règles de réécriture je pense.
J'ai envoyé un mail au service technique d'ovh qui me dit que ce type de problème sort de leur domaine d'action et qu'il faut que je me tourne vers un webmaster... Smiley confus
J'ai voulu poser la question sur les forums d'ovh, mais, bien que je m'étais déjà inscrit depuis un certain temps, je n'ai plus la possibilité de publier un message...
Quelqu'un saurait-il comment faire pour avoir nouveau l'autorisation de poster sur leurs forums ?
Modifié par jojaba (16 Oct 2015 - 07:43)
Bonjour jojaba,

Je viens de faire une petite verif sur ton site, tes pages sont accessible avec un double slash, mais aussi un triple et autant de slash que l'on a envie de mettre ..
Effectivement tu as un problème au niveau de réécriture d'url

Et, je m’aperçois que tu as un autre problème - tout aussi grave :
Tu as trois home similaire : (Duplicate Content). En fait, l'ensemble de ton site semble être en DC, il va vite falloir régler ce problème si tu ne veux ps être désindexer.

Dans ton .htaccess rajoute ça au début de tes réécritures :


RewriteEngine on 
RewriteRule (.*)  http://www.ndd.com/$1  [R=301,L]
RewriteRule ^index\.php$  http://www.ndd.com/  [QSA,L,R=301] 


tu remplaces ndd par le nom de ton site (j'imagine que tu l'avais compris). Smiley biggrin
Modifié par J_B (18 Oct 2015 - 13:30)
Modérateur
Merci.

J'obtiens le message suivant :
============================
La page n'est pas redirigée correctement

Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui n'aboutira pas.

La cause de ce problème peut être la désactivation ou le refus des cookies.
=============================
Le htaccess utilisé pour cela :
# Errors treatment
ErrorDocument 404  http://www.fox-zooconsulting.com
 

#--------------------------------------------------
# URL Rewriting
#--------------------------------------------------

Options +FollowSymlinks
RewriteEngine on

# Rewrite rules
#-----------------------------

# Avoid double-slash issue
RewriteRule (.*)   http://www.fox-zooconsulting.com/$1   [R=301,L]
RewriteRule ^index\.php$   http://www.fox-zooconsulting.com/   [QSA,L,R=301] 

# FR rewrite
RewriteRule ^references/(ref[0-9]{4})$                  index.php?page=references&lang=fr&ref=$1 [L]
RewriteRule ^references[/]{0,1}$                        index.php?page=references&lang=fr [L]
RewriteRule ^prestations-missions[/]{0,1}$              index.php?page=services&lang=fr [L]
RewriteRule ^reseau[/]{0,1}$                            index.php?page=network&lang=fr [L]
RewriteRule ^actualites[/]{0,1}$                        index.php?page=news&lang=fr [L]
RewriteRule ^contact[/]{0,1}$                           index.php?page=contact&lang=fr [L]
RewriteRule ^mentions-legales[/]{0,1}$                  index.php?page=imprint&lang=fr [L]

### OTHER Languages rewrite ###
RewriteRule ^([a-z]{2})[/]{0,1}$                                index.php?page=home&lang=$1 [L]

# EN rewrite
RewriteRule ^([a-z]{2})/references/(ref[0-9]{4})$               index.php?page=references&lang=$1&ref=$2 [L]
RewriteRule ^([a-z]{2})/references[/]{0,1}$                     index.php?page=references&lang=$1 [L]
RewriteRule ^([a-z]{2})/services-missions[/]{0,1}$              index.php?page=services&lang=$1 [L]
RewriteRule ^([a-z]{2})/network[/]{0,1}$                        index.php?page=network&lang=$1 [L]
RewriteRule ^([a-z]{2})/news[/]{0,1}$                           index.php?page=news&lang=$1 [L]
RewriteRule ^([a-z]{2})/contact[/]{0,1}$                        index.php?page=contact&lang=$1 [L]
RewriteRule ^([a-z]{2})/imprint[/]{0,1}$                        index.php?page=imprint&lang=$1 [L]

# DE rewrite
RewriteRule ^([a-z]{2})/referenzen/(ref[0-9]{4})$               index.php?page=references&lang=$1&ref=$2 [L]
RewriteRule ^([a-z]{2})/referenzen[/]{0,1}$                     index.php?page=references&lang=$1 [L]
RewriteRule ^([a-z]{2})/leistungen-auftrage[/]{0,1}$            index.php?page=services&lang=$1 [L]
RewriteRule ^([a-z]{2})/netz[/]{0,1}$                           index.php?page=network&lang=$1 [L]
RewriteRule ^([a-z]{2})/aktualitaten[/]{0,1}$                   index.php?page=news&lang=$1 [L]
RewriteRule ^([a-z]{2})/kontakt[/]{0,1}$                        index.php?page=contact&lang=$1 [L]
RewriteRule ^([a-z]{2})/impressum[/]{0,1}$                      index.php?page=imprint&lang=$1 [L]


Je me demande si ce n'est pas au niveau de la redirection www dans la config d'ovh qu'il faudrait agir (j'ai pas accès à ce paramètre mais je peux demander la modif).
J'ai fait une recherche sur Google sur les mots-clés fox zooconsulting : https://www.google.fr/search?q=fox+zooconsulting
Effectivement, la page d'accueil est référencée en www alors que les autres pages le sont sur le domaine principal (fox-consulting.com). Duplicate content dans ce cas ?

Merci.
Modifié par jojaba (19 Oct 2015 - 07:03)
Effectivement l'ensemble de ton site est indexé sans les www, hormis la home. Détail que je n'avais pas été vérifier.Retire le code que je t'ai donné hier.

Comme ton site est indexé sans les www , toutes tes urls, tous les liens que tu postes DOIVENT être sans www.
ici par exemple :
# Errors treatment ErrorDocument 404   http://www.fox-zooconsulting.com


ça laisse le en commentaire pour le moment, à cause de ta boucle de redirection

# Avoid double-slash issue
RewriteRule (.*)    http://fox-zooconsulting.com/$1    [R=301,L]
RewriteRule ^index\.php$    http://fox-zooconsulting.com/    [QSA,L,R=301] 


Et oui effectivement ça fait du DC. Mais ça aussi :
http://fox-zooconsulting.com/
http://fox-zooconsulting.com/index.php
http://fox-zooconsulting.com/index.php?page=xxxxx autant de fois que tu as de paramètre différent
http://fox-zooconsulting.com//index.php
http://fox-zooconsulting.com///index.php

Pour toutes raisons, tu dois aussi mettre ta balise canonical dans les meta de ta home.

Et il faut que tu te pose la question
- Quel url veut-tu pour ta home ?

http://fox-zooconsulting.com/ OU http://fox-zooconsulting.com/index.php

Enfin, attention à l'emplacement de tes redirections, celui concernant ta home, doit être tout au début de tes rewriterules
Modifié par J_B (19 Oct 2015 - 10:11)
Bon,

Je viens de faire un test, en partant de cette url :


 http://www.fox-zooconsulting.com//prestations-missions
 

avec ce code en htacess :

RewriteCond %{HTTP_HOST} ^fox-zooconsulting.com
RewriteRule (.*)     http://fox-zooconsulting.com/$1     [R=301,L]
RewriteRule ^index\.php$     http://fox-zooconsulting.com/     [QSA,L,R=301] 
RewriteRule ^prestations-missions[/]{0,1}$              index.php?page=services&lang=fr


j'attéri sur :
http://www.fox-zooconsulting.com/index.php?page=services&lang=fr


Donc a priori ça fonctionne comme tu as l'air de le vouloir ? Et je n'ai pas de boucle de redirection.

Par contre, es-tu sur de vouloir des urls de ce type ? Smiley confus

Edit, tu remarqueras que si tu enlève la dernière Rewriterule tu n'as plus de // dans ton url
Modifié par J_B (19 Oct 2015 - 10:11)
Modérateur
http://fox-zooconsulting.com est redirigé vers http://www.fox-sooconsulting.com sans que je n'aies fait quoi que ce soit pour ça dans le htaccess.
C'est pas là qu'il faudrait que je commence ?
Je sais que la redirection vers le sous-domaine www se fait dans la console d'admin d'ovh.
Pour la meta à ajouter dans le head, ça ne règlera rien au problème je pense.
J'ai pas bien compris ce qu'il faudrait que je fasse...
Modifié par jojaba (19 Oct 2015 - 10:46)
Pour la meta, non mais ça limitera les dégâts. Car pendant que tu cherches une solution, google lui passe sur ton site, et indexe tes erreurs. Si tu ne les corriges pas rapidement, tu peux te retrouver dans une situation plus difficile à en sortir que si tu avais pris un minimum de précaution en amont.

Je regarde la console ovh, c'est vrai qu'il y a un truc à faire mais c'est trop loin pour moi, je m'en souviens plus .

Edit : tiens regarde dans la partie configuration :

https://www.ovh.com/fr/g1332.mise-en-place-multidomaine

Tu peux choisir ou non d'y attacher le www
Modifié par J_B (19 Oct 2015 - 11:12)
Modérateur
Les link canonical sont en place, merci pour le conseil.
J'ai tout défini pour le sous-domaine www comme je n'ai pas la possibilité d'accéder à l'admin d'ovh, j'ai défini comme url préférée celle-ci : http://www.fox-zooconsulting.com
Etape suivante (j'ai pas trop compris ce qu'il fallait que je fasse dans le htaccess) ?
Merci pour ta patience.
Donc tu as écrit sur ta page index (et uniquement sur cette page) que ta canonical est l'url avec les www ;
Pourtant, l'ensemble de ton site est indexé SANS les www.

Il va falloir choisir sur quoi tu veux partir, avec www ou sans les www ?

En sachant que :
- si tu prend avec les www, il faut corriger toutes tes urls
- si tu prend sans les www, il faut corriger la home
Modérateur
J'ai modifié l'url canonical pour chaque page (de manière dynamique) regarde dans le code sourcede chaque page.
Oui, jai choisi le www car je ne peux pas modifier la redirection défini dans l'amin ovh (je ne suis pas le titulaire d compte) et que cette redirection est définie par défaut apparemment....
Modérateur
Bonjour,

Pour en revenir au double-slash, le problème persiste. J'ai pu m'en rendre compte en me rendant sur une des pages références à partir de la page de recherche Google que j'indiquais ci-dessus. Mais peut-être que maintenant que les url de références ont été indiquées dans la balise canonical, Google va réindexer les bonnes pages (ça prend combien de temps en gérénal ?).
Tu confirmes ?
Modifié par jojaba (20 Oct 2015 - 08:27)
Non, la balise canonical est une première approche.
Comme je te l'ai dit plus haut, en choisissant de prendre
www.ndd.com au lieu de ndd.com tu dois rediriger toutes les url ndd.com qui sont déjà indexé vers www.ndd.com .

Regarde par toi même. tape ça :
site:fox-zooconsulting.com et tu verras que toutes tes urls sont SANS www sauf la home
et
site:www.fox-zooconsulting.com là tu n'as que la home d'indexé.
or toi tu veux que toutes tes url commence avec WWW, tu dois tout rediriger vers le www

Pour cela tu dois rajouter ça dans ton htacess :

RewriteCond %{HTTP_HOST} ^fox-zooconsulting.com
RewriteRule (.*)      http://www.fox-zooconsulting.com/$1      [R=301,L]
RewriteRule ^index\.php$      http://www.fox-zooconsulting.com/      [QSA,L,R=301] 


Ce code verifie ton host et le redirige vers www. Il fait la même chose avec le
www.ndd.com/index.php qu'il redirige vers www.ndd.com/

Concernant le double slash, je ne l'ai pas vu indexé dans tes urls. Donc il apparaît suite à une de tes redirections OU un morceau de code php que tu as modifié ou tu a mis un // au lieu d'un seul ( ça arrive souvent ça aussi).
Lorsqu'on ajoute à la main dans une de tes url le // effectivement l'url fonctionnent encore alors qu'elle devrait être redirigé sur la même avec un seul / ou à défaut afficher une erreur 404 (première solution mieux, et c'est aussi ce que le code ci-dessus te fait).
Modérateur
J'ai appliqué ce que tu me proposes, mais les adresses étaient des adresses qui présentaient les chaînes get.
J'ai fait ça à la place (juste supprimé la troisième ligne) :
RewriteCond %{HTTP_HOST}     ^fox-zooconsulting.com
RewriteRule (.*)                             http://www.fox-zooconsulting.com/$1       [R=301,L]

La redirection vers le sous-domaine www se fait bien.
Toujours le problème du double-slash sur les pages, exemples :
http://fox-zooconsulting.com/prestations-missions
http://fox-zooconsulting.com/reseau
http://fox-zooconsulting.com/contact

Edit. J'ai testé sans slash entre le domaine et $1 et ça ne change rien !!!!
====================
RewriteCond %{HTTP_HOST}            ^fox-zooconsulting.com
RewriteRule (.*)                     http://www.fox-zooconsulting.com$1       [R=301,L]

====================
Modifié par jojaba (20 Oct 2015 - 12:35)
Si tu veux des url avec www, ré-édite ton messages pour que tes adresses sans WWW ne soient pas cliquable... Il faut que tu fasses de même avec toutes les urls que tu as pu écrire à droite à gauche.

RewriteCond %{HTTP_HOST} ^fox-zooconsulting.com
RewriteRule (.*)      http://www.fox-zooconsulting.com/$1      [R=301,L,QSA]
RewriteRule ^index\.php$      http://www.fox-zooconsulting.com/      [QSA,L,R=301]


Réessaye avec le QSA pour les paramètres

Sinon tu as aussi cette solution :
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ 
RewriteRule . %1/%2 [R=301,L]


Edit : si ça peut t'aider, voici LE document à lire : http://httpd.apache.org/docs/current/fr/mod/mod_rewrite.html#rewriterule
Modifié par J_B (20 Oct 2015 - 13:27)
Modérateur
Je viens de tester tes solutions sans succès (ajout du qsa donne quand-même les url avec les chaînes get)
Les liens que j'ai laissé sans www, c'était pour constater qu'on était redirigé vers le www.
D'ailleurs, j'ai carrément enlevé les lignes que tu proposais et la redirection se fait vers le www !!! Je n'ai rien modifié d'autre...
Le truc pour enlever les double-slashs ne fonctionne pas.
Il faut que je me plonge dans la doc que tu me proposes... ceci dit, l'histoire de double-slash ne pourrait-elle pas venir de la redirection ovh ?
Modifié par jojaba (20 Oct 2015 - 13:40)
Pages :