Voilà , je vous expose mon cas de figure :
http://localhost, selon la configuration, renvoi sur le contenu ci-dessous via le browser :
Code :
- Name Last modified Taille
- [ ] site01/ 10-Jan-2012 10:15 -
- [ ] site02/ 10-Jan-2012 10:10 -
- [ ] site03/ 10-Jan-2012 10:10 -
|
Quand je clique sur site01/ je souhaiterais donc naviguer sur le site "site01" et faire en sorte qu’il fonctionne comme s’il s’agissait de la racine du site.
http://localhost/site01/
Contenu du directory site01/ :
Code :
- ../www/
- ../site01/
- index.php
- .htaccess
- menu01.php
- menu02.php
- menu01/
- image01.jpg
- image02.jpg
- mini/
- image01.jpg
- image02.jpg
- css/
- style.css
|
J’ai donc créé un fichier .htaccess que j’ai placé dans le répertoire site01/ afin de réécrire les URLs envoyées.
Code :
- Options +FollowSymlinks
- RewriteEngine On
- RewriteRule ^([a-z]+)/$ index.php?menu=$1 [L]
- RewriteRule ^([a-z]+)$ index.php?menu=$1 [L]
- RewriteRule ^([a-z]+)/([a-z]*)$ index.php?menu=$1&categorie=$2 [L]
|
Voilà exactement ce que j’aurais souhaité avoir :
Base
Url appelée : http://localhost/site01/menu01
Url réécrite : http://localhost/site01/index.php?menu=menu01
Sous menu
Url appelée : http://localhost/site01/menu01/categorie01
Url réécrite : http://localhost/site01/index.php? [...] ategorie01
[…]
J’arrive à très bien faire fonctionner le tout mais avec l’extension .html comme paramètre de réécriture (http://localhost/site01/menu01-categorie01.html) or je veux sans
Si un répertoire existe, je ne souhaite donc pas pouvoir y accéder, mais réécrire l’url.
Ex : Url appelée http://localhost/site01/repertoire/
Url réécrite : http://localhost/site01/index.php (en clair retourner sur la page d’accueil du site)
Le contenu de mon fichier index.php appelle différents fichiers css, jpg, … et je n’arrive pas à trouver le bon formatage de ma ligne de commande pour que cela fonctionne parfaitement…
Mes fiches de styles .css sont dans le répertoire /css/
Mes images utilisées pour le site sont dans le répertoire /img/
…
Extrait :
[…]
<link rel="stylesheet" type="text/css" href="/css/style.css"/>
[…]
<img src="/img/logo.png" />
[…]
Actuellement, avec ce type de configuration, quand je saisis par ex :
http://localhost/site01/menu01, si le répertoire existe, il m’affiche curieusement la bonne url, à savoir http://localhost/site01/index.php?menu=menu01, mais et je ne peux l’expliquer, les images et autres fiches de styles ont sautées alors que si menu02 n’existe pas, tout fonctionne à merveille …dans la barre d’adresse on peut voir : http://localhost/site01/menu01/?menu=menu01, si je modifie légèrement le fichier .htaccess en mettant un "/" devant indext.php…, comme ceci :
RewriteRule ^([a-z]+)$ /index.php?menu=$1 [L]
RewriteRule ^([a-z]+)/$ /index.php?menu=$1 [L]
, l’url appelée me renvoi une erreur 404 qui d’ailleurs meme avec les lignes ci-dessous n’est même pas personnalisée :
ErrorDocument 404 index.php?menu=404
ErrorDocument 403 index.php?menu=403
Contenu de mon projet01 pour exemple :
Code :
- ../site01/
- index.php
- .htaccess
- menu01.php
- menu02.php
- menu01/
- image01.jpg
- image02.jpg
- mini/
- image01.jpg
- image02.jpg
- css/
- style.css
|
http://localhost/site01/ appelle donc par défaut : http://localhost/site01/index.php
http://localhost/site01/menu01 devrait renvoyer http://localhost/site01/index.php?menu=menu01
Mon fichier index.php fait un include de la variable $menu et donc si elle existe tout est ok, sinon par défaut page d’accueil.
Include donc aussi de ma fiche de style css…
Message édité par Odissine le 13-01-2012 à 13:10:03