8722 sujets

Développement web côté serveur, CMS

Bonjour,

Je travaille actuellement sur la réécriture d'url pour le site de mon groupe :
www.harps-official.com

J'ai réussi à faire ça :

http://www.harps-official.com/news
renvoie vers
http://www.harps-official.com/home.php?p=news

http://www.harps-official.com/bio
renvoie vers
http://www.harps-official.com/home.php?p=bio

etc... jusqu'à là tout va bien.

En revanche, en faisant une recherche, Google me renvoie vers le lien sans www :
http://harps-official.com

Et là ça fonctionne moins bien :

http://harps-official.com/news fonctionne, mais le paramètre d'URL n'est pas pris en compte. La section NEWS (appelée en AJAX) ne s'affiche plus.

J'ai essayé de forcé l'affichage des www. Le forçage fonctionne, mais les réécritures sus mentionnée ne fonctionnent plus.

Quelqu'un aurait-il une idée ?
Merci pour votre aide Smiley smile
Avec le contenu du .htaccess c'est peut-être mieux Smiley smile

------------------------
Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^harps-official.com$
RewriteRule ^(.*)  http://www.harps-official.com/   [QSA,L,R=301]

RewriteRule ^([a-z]+)$ /home.php?p=$1 [L]


#OPTIONS
php_value upload_max_filesize 5000000
php_value post_max_size 5000000
php_flag session.bug_compat_42 1
php_flag session.bug_compat_warn 0


---------------------------------------------------
Modifié par Kittisak (06 May 2013 - 16:18)
Salut benj,

Effectivement, ça semble fonctionner.

Saurais-tu m'expliquer pourquoi ça marche dans un cas et pas l'autre ?

Quoi qu'il en soit, merci beaucoup Smiley smile
Ah dernier problème logique :

J'ai créé une page physique www.harps-official.com/admin
qui me sert de back-office.

Du fait de la réécriture d'url, il pense que "admin" est à interpréter comme un paramètre, et donc ne trouve pas la page. Comment pourrais-je exclure le terme "admin" de l'analyse ?

Mon code actuel :

#URL REWRITING

Options +FollowSymlinks
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteRule ^   http://www.%{HTTP_HOST}%{REQUEST_URI}   [R=301,L]

RewriteRule ^([a-z]+)$ /home.php?p=$1 [L]


Merci ! Smiley confused
Au temps pour moi. L'url est en fait "/admin.php" et non "admin/" et ça fonctionne sans souci et sans condition. Mais pourquoi ?

Est-ce parce que dans la règle
RewriteRule ^([a-z]+)$ /home.php?p=$1 [L]

la regex exclut le point du ".php" ?
Modérateur
ben oui, enfin [a-z]+ ne recherche que une série de caractères comprenant uniquement les 26 caractères de l'alphabet, en minuscule.

Souvent ce genre de rewrite est plus générique, et on rajoute une condition qui permette d'exlure du rewrite les adresses d'accès direct à un fichier.

a écrit :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /home.php?p=$1 [L]


Donc avec cela, si je tape l'adresse /admin.php et que ce fichier existe, cela fonctionnera. Cependant si je tape /page.php et que cette page n'éxiste pas l'adresse sera réécrite en /home.php?p=page.php