Rediriger une URL vers un nom de dossier qui n'existe pas

WRInaute discret
Bonjour à tous,

Je galère un peu pour trouver une solution, j'ai vu/lu pleins de trucs pour trouver une solution mais rien n'y fait...

Je souhaite ré-écrire des URLs sous forme de dossiers, pour comprendre :

Avec ce type d'URL : http://www.monsite.com/fichier.php?ref=1
Devenir : http://www.monsite.com/bleu/

Mon fichier php existe sur mon site, mais pas le dossier.

Est ce possible déjà de faire ceci ? et si oui comment ?

Merci pour votre aide :)
 
WRInaute discret
C'est tout à fait possible, c'est le principe des répertoires virtuels.

Voici le code correspondant à l'exemple:

Code:
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^bleu/$ fichier.php?ref=1 [L]

Attention toute fois, à cause des répertoires virtuels (ici "bleu") il y aura des soucis pour les ressources internes (css, javascript, images, etc).
Pour résoudre le problème, il suffit d'ajouter dans chaque page concernée le tag html suivant (juste après <head>):
Code:
<base href="http://www.monsite.com/" />

Autre chose, si vous désirez utiliser un répertoire virtuel qui possède le même nom que votre fichier php cible (dans ce cas-là, nous aurions eu un répertoire virtuel nommé "fichier"), il faut désactiver l'option multiviews:
Code:
Options +FollowSymLinks -MultiViews

Le paramètre FollowSymLinks n'est bien souvent pas nécessaire car déjà inclus de base dans la configuration serveur. Ceci est à placer par exemple avant "RewriteEngine on"
 
WRInaute discret
Merci Giustino :)

J'étais pas très loin, mais je ne savais pas pour la balise BASE;

Bon par contre j'ai une erreur 404, donc c'est pas encore ça ^^

Ah moins que mon Wamp soit mal configuré mais mes autres sites fonctionnent bien.

Une autre astuce ou direction ?

Merci :)
 
WRInaute discret
Merci :)

Donc erreur 404 pour les deux URL !

Mon HTACCESS
Code:
#--------------------------------------------------
# Répertoire : racine du site
#--------------------------------------------------

# Le serveur doit suivre les liens symboliques :
Options +FollowSymlinks

# Activation du module de réécriture d'URL :
RewriteEngine on
RewriteBase /


#--------------------------------------------------
# Règles de réécriture d'URL :
#--------------------------------------------------

# Header : Liste
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^bleu/$                   /mxv3/professionnels.php?type=1 [L]


#--------------------------------------------------
# Gestion des erreurs 400 et 500
#--------------------------------------------------
ErrorDocument 401 /mxv3/401
ErrorDocument 403 /mxv3/403
ErrorDocument 404 /mxv3/404
ErrorDocument 406 /mxv3/406
ErrorDocument 500 /mxv3/500
ErrorDocument 503 /mxv3/503

Merci pour ton aide :)
 
WRInaute discret
On est toujours bien d'accord que le dossier "bleu" est virtuel et n'existe pas physiquement ?

A priori, je ne vois rien d'anormal.
La page d'erreur 404 (/mxv3/404) s'affiche correctement ?

Je vois peut-être une possibilité d'erreur mais sans être totalement convaincu que ça changera tout.
Il faut remplacer cette ligne
Code:
RewriteRule ^bleu/$                   /mxv3/professionnels.php?type=1 [L]
par ceci (sans le slash avant mxv3)
Code:
RewriteRule ^bleu/$                   mxv3/professionnels.php?type=1 [L]

L'url directe sur http://www.site.com/mxv3/professionnels.php?type=1 fonctionne bien ? Pas d'erreur 404 ?
 
WRInaute discret
Oui le dossier "bleu" est bien virtuel, du moins je n'ai rien créer physiquement et virtuellement (ou un peuso alias etc.)

L'URL direct (en Php) fonctionne très bien j'ai toutes mes infos :)

Etrange...
 
WRInaute discret
Re bonjour

Bon cela fonctionne très bien :)
Je ne sais pas pourquoi, mais j'ai killer mon HTACESS, et je l'ai recréé et BAM! ça marche oO
Peut être un caractère "caché" qui devait embrouiller la chose...

Au final, ceci fonctionne bien :

Code:
#--------------------------------------------------
# Répertoire : racine du site
#--------------------------------------------------

# Le serveur doit suivre les liens symboliques :
Options +FollowSymlinks

# Activation du module de réécriture d'URL :
RewriteEngine on
RewriteBase /


#--------------------------------------------------
# Règles de réécriture d'URL :
#--------------------------------------------------

# Header : Liste
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^bleu/$                   /mxv3/professionnels.php?type=1 [L]


#--------------------------------------------------
# Gestion des erreurs 400 et 500
#--------------------------------------------------
ErrorDocument 401 /mxv3/401
ErrorDocument 403 /mxv3/403
ErrorDocument 404 /mxv3/404
ErrorDocument 406 /mxv3/406
ErrorDocument 500 /mxv3/500
ErrorDocument 503 /mxv3/503

Un grand MERCI à toi Giustino :)
 
Discussions similaires
Haut