répertoires virtuels

WRInaute occasionnel
Bonjour,

je me mets à la réécriture d'URL via .htaccess, et j'ai quelques soucis de débutant que je n'ai pas réussi à résoudre avec les articles de webrankinfo.

Toutes mes pages sont contenues à la racine de mon site.

Voilà ce que j'ai aujourd'hui :

Code:
#--------------------------------------------------
# Directory: /
#--------------------------------------------------

# Server must follow symbolic links:
Options +FollowSymlinks

# Activation of Rewriting Mode:
RewriteEngine on

# Redirection from http://bestoftheatre.co.uk to http://www.monsite.co.uk
RewriteCond %{HTTP_HOST} !^www.monsite.co.uk$
RewriteRule ^(.*)   http://www.monsite.co.uk/$1  [R=301]


#--------------------------------------------------
# Rules:
#--------------------------------------------------

RewriteRule ^articles/([0-9]+)\.html$  article.php?sid=$1 [L]
RewriteRule ^updates/([0-9]+)\.html$  update.php?vid=$1 [L]

RewriteRule ^news/$  news.php [L]
RewriteRule ^information/$  information.php [L]
RewriteRule ^updates/$  updates.php [L]

Voici ce que je souhaite faire :

rediriger de -http://monsite.co.uk/ vers -http://www.monsite.co.uk/

quand un visiteur réclame une page /articles/2.html lui servir article.php?sid=2
quand un visiteur réclame une page /updates/2.html lui servir update.php?sid=2

quand un visiteur réclame la page /news lui servir la page /news.php
quand un visiteur réclame la page /information lui servir la page /information.php
quand un visiteur réclame la page /updates lui servir la page /updates.php

Mon .htaccess est-il bon ?
 
WRInaute occasionnel
Fab le Fou a dit:
effisk a dit:
Mon .htaccess est-il bon ?

A première vue, je dirais que oui, mais le mieux c'est encore de tester.
Décris-nous le message d'erreur si ça bug.
Ca marche quand je visite
news/
information/
updates/
mais pas pour les autres.

Si je vais sur /updates/2.html il m'affiche le contenu de updates/

:?
 
WRInaute passionné
effisk a dit:
Ca marche quand je visite
news/
information/
updates/
mais pas pour les autres.

Si je vais sur /updates/2.html il m'affiche le contenu de updates/

:?

Tu veux dire qu'il affiche en fait updates.php au lieu de update.php ?

Si oui, peut-être voir du côté de ton update.php pour tester la récup de ta variable "vid".
 
WRInaute accro
En changeant le nom de ton fichier updates.php (en updaaates.php par exemple), et en répercurtant ce changement dans le .htaccess, ça donne quoi ?

Code:
RewriteRule ^articles/([0-9]+)\.html$  article.php?sid=$1 [L]
RewriteRule ^updates/([0-9]+)\.html$  update.php?vid=$1 [L]

RewriteRule ^news/$  news.php [L]
RewriteRule ^information/$  information.php [L]
RewriteRule ^updates/$  updaaates.php [L]
 
WRInaute occasionnel
Fab le Fou a dit:
effisk a dit:
Ca marche quand je visite
news/
information/
updates/
mais pas pour les autres.

Si je vais sur /updates/2.html il m'affiche le contenu de updates/

:?

Tu veux dire qu'il affiche en fait updates.php au lieu de update.php ?

Si oui, peut-être voir du côté de ton update.php pour tester la récup de ta variable "vid".
pas tout à fait: il affiche updates.php au lieu de update.php?vid=XXX


wullon a dit:
En changeant le nom de ton fichier updates.php (en updaaates.php par exemple), et en répercurtant ce changement dans le .htaccess, ça donne quoi ?

Code:
RewriteRule ^articles/([0-9]+)\.html$  article.php?sid=$1 [L]
RewriteRule ^updates/([0-9]+)\.html$  update.php?vid=$1 [L]

RewriteRule ^news/$  news.php [L]
RewriteRule ^information/$  information.php [L]
RewriteRule ^updates/$  updaaates.php [L]
vais tester ça.

Merci de vous être penchés sur mon problème.
 
WRInaute occasionnel
wullon a dit:
En changeant le nom de ton fichier updates.php (en updaaates.php par exemple), et en répercurtant ce changement dans le .htaccess, ça donne quoi ?

Code:
RewriteRule ^articles/([0-9]+)\.html$  article.php?sid=$1 [L]
RewriteRule ^updates/([0-9]+)\.html$  update.php?vid=$1 [L]

RewriteRule ^news/$  news.php [L]
RewriteRule ^information/$  information.php [L]
RewriteRule ^updates/$  updaaates.php [L]
Ca ne change rien. :?

En fait le point critique c'est surtout la première partie du .htacess:
Code:
RewriteRule ^articles/([0-9]+)\.html$  article.php?sid=$1 [L]
RewriteRule ^updates/([0-9]+)\.html$  update.php?vid=$1 [L]
Le reste je peux m'en paser puisqu'il n'y a aucun paramètre passé.
 
WRInaute accro
Tu as bien viré le fichier updates.php ?

Parce que je pensais que le serveur web pouvait d'abord prendre le .php (en effet, très souvent avec les paramètres par défaut, s'il y a fichier.php, /fichier.php, /fichier/ et fichier/1/2/ renvoient vers fichier.php) avec l'UR, ça avait fait ça à un membre du forum dernièrement.
 
WRInaute occasionnel
Donc au final, j'ai coupé mon .htaccess pour ne garder que ça :

Code:
#--------------------------------------------------
# Directory: /
#--------------------------------------------------

# Server must follow symbolic links:
Options +FollowSymlinks

# Activation of Rewriting Mode:
RewriteEngine on

# Redirection from http://bestoftheatre.co.uk to http://www.monsite.co.uk
RewriteCond %{HTTP_HOST} !^www.monsite.co.uk$
RewriteRule ^(.*)   http://www.monsite.co.uk/$1  [R=301]

#--------------------------------------------------
# Rules:
#-------------------------------------------------- 

RewriteRule ^articles/([0-9]+)\.html$  article.php?sid=$1 [L]
Curieusement, ça passe bien de -http://monsite.co.uk à -http://www.monsite.co.uk quand je visite -http://monsite.co.uk mais l'autre règle ne passe pas.
 
WRInaute occasionnel
wullon a dit:
Tu as bien viré le fichier updates.php ?

Parce que je pensais que le serveur web pouvait d'abord prendre le .php (en effet, très souvent avec les paramètres par défaut, s'il y a fichier.php, /fichier.php, /fichier/ et fichier/1/2/ renvoient vers fichier.php) avec l'UR, ça avait ça à un membre du forum dernièrement.
mmh j'avais dû faire une bêtise, ça a l'air d'être ça le problème :?

Merci, c'est résolu.
 
WRInaute occasionnel
wullon a dit:
Oui en effet.

Il ne manque pas le L dans "RewriteRule ^(.*) http://www.monsite.co.uk/$1 [R=301] " ? (je ne sais pas du tout si c'est de là que vient le problème)
non, je crois que le [L] ne doit être mis que quand on veut arrêter l'application des règles une fois celle-ci appliqué. En l'occurrence, je veux aussi appliquer la règle suivante, même si la première doit être appliquée.

Merci encore.
 
WRInaute accro
effisk a dit:
non, je crois que le [L] ne doit être mis que quand on veut arrêter l'application des règles une fois celle-ci appliqué. En l'occurrence, je veux aussi appliquer la règle suivante, même si la première doit être appliquée.
Oui, mais comme tu rediriges, ça ne sert à rien d'appliquer les règles suivantes non ?

J'aurais même tendance à dire que tu vas faire travailler le serveur pour rien en regardant les règles deux fois (enfin je ne sais pas comment ça fonctionne en détail, il zappe peut-être par défaut les autres règles quand il y a une redirection) :
url demandée : http://example.com/truc/
pas de www : règle 1 : on va faire une 301 vers http://www.example.com/truc/
/truc/ : règle 2 : en interne on appelle truc.php?chouette=bidule
*redirection*
url demandée : http://www.example.com/truc/
/truc/ : règle 2 : en interne on appelle truc.php?chouette=bidule

De rien :p.
 
WRInaute occasionnel
wullon a dit:
effisk a dit:
non, je crois que le [L] ne doit être mis que quand on veut arrêter l'application des règles une fois celle-ci appliqué. En l'occurrence, je veux aussi appliquer la règle suivante, même si la première doit être appliquée.
Oui, mais comme tu rediriges, ça ne sert à rien d'appliquer les règles suivantes non ?

J'aurais même tendance à dire que tu vas faire travailler le serveur pour rien en regardant les règles deux fois (enfin je ne sais pas comment ça fonctionne en détail, il zappe peut-être par défaut les autres règles quand il y a une redirection) :
url demandée : http://example.com/truc/
pas de www : règle 1 : on va faire une 301 vers http://www.example.com/truc/
/truc/ : règle 2 : en interne on appelle truc.php?chouette=bidule
*redirection*
url demandée : http://www.example.com/truc/
/truc/ : règle 2 : en interne on appelle truc.php?chouette=bidule

De rien :p.
Si je colle un [L] après la première règle, il n'appliquera pas les suivantes et du coup la réécriture d'ulr ne fonctionnera pas, enfin c'est comme ça que je le comprends. Et moi je veux que les règles de réécriture s'appliquent quoi qu'il arrive, sauf quand elles ont déjà été appliquées, donc je colle un [L] après chacune d'elles.
 
WRInaute accro
effisk a dit:
Si je colle un [L] après la première règle, il n'appliquera pas les suivantes et du coup la réécriture d'ulr ne fonctionnera pas, enfin c'est comme ça que je le comprends. Et moi je veux que les règles de réécriture s'appliquent quoi qu'il arrive, sauf quand elles ont déjà été appliquées, donc je colle un [L] après chacune d'elles.
Sauf erreur, quand t'as une règle de redirection, ça redirige :)S), et ça repart comme si c'était une nouvelle page.
Faudrait un expert de l'UR pour vérifier tout ça :p (enfin ça ne coûte rien d'essayer).
 
Discussions similaires
Haut