Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/02/2011, 14h20   #1
Nouveau Membre du Club
 
Inscription : novembre 2008
Messages : 75
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 75
Points : 32
Points : 32
Par défaut Accès par une certaine url uniquement

Bonjour,

J'ai un site par lequel je souhaiterais acceder uniquement si l'utilisateur tape un certain format d'adresse du style:

Code :
monsite.com/dossier/toto.titi
Pour ce faire j'ai créé la condition suivante:

Code :
1
2
3
4
5
RewriteCond     %{REQUEST_URI} ^/dossier/(.*)\.(.*)$
RewriteRule     (?i)^/dossier/(.*)$ /monfichier.php?var=$1&%{QUERY_STRING} [L]

# Si on arrive avec une mauvaise adresse on redirige totalement
RewriteRule   (.*) http://monsite.com
La condition fonctionne bien par contre comme j'ai des images et des styles au format:

Code :
1
2
monsite.com/images/...
monsite.com/styles/....
Les styles et les images ne s'affichent pas.

Auriez-vous une solution à me proposer?

Merci d'avance!
gescolino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 14h40   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
Il faut ajouter des conditions pour ne pas interdire les URL qui finissent en .js, .ccs, etc. :
Code :
1
2
3
4
5
RewriteCond %{REQUEST_URI} !\.js$
RewriteCond %{REQUEST_URI} !\.css$
RewriteCond %{REQUEST_URI} !\.jpg$
...
RewriteRule   (.*) http://monsite.com
Pour info, le RewriteCond sur ta première règle (pour le /dossiers/...) ne sert strictement à rien car le masque du RewriteRule permet également de vérifier cette condition.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 17h10   #3
Nouveau Membre du Club
 
Inscription : novembre 2008
Messages : 75
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 75
Points : 32
Points : 32
Oui en effet merci pour la remarque -..-

Tout fonctionne bien maintenant merci!

Par contre j'ai une petite question: pourquoi je suis obligé de mettre les différentes conditions pour ne pas interdire ce que j'ai besoin sous la rewriterule:

Code :
RewriteRule     (?i)^/dossier/(.*)$ /monfichier.php?var=$1&%{QUERY_STRING} [L]
En le faisant avant cette condition, pas d'accès aux fichiers js,...
gescolino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 18h21   #4
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
Désolé, je n'ai pas compris la question. La règle qui bloque les CSS, etc. ce n'est pas la première règle sur /dossiers mais la seconde. D'où le fait que j'ai mis des conditions sur cette seconde règle. Après, on peut peut-être factoriser les conditions :
Code :
RewriteCond %{REQUEST_URI} !\.(js|css|jpg|...)$
plutôt que de mettre une RewriteCond par extension.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 08h52   #5
Nouveau Membre du Club
 
Inscription : novembre 2008
Messages : 75
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 75
Points : 32
Points : 32
Pour ce qui est de la factorisation c'est ce que j'ai fait merci.

Pour mon autre question je pensait que le flag [L] à la fin de la rewriterule sur /dossier signifiait que si la règle était atteinte on ne continuait pas plus loin. Mais apparemment j'ai du louper quelque chose.
gescolino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2011, 17h53   #6
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 278
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 278
Points : 8 565
Points : 8 565
La réécriture d'URL est un processus itératif qui ne s'arrête que si Apache aboutit à une URL qui n'est plus modifiée par les règles. Apache va donc jouer plusieurs fois les règles. Le [L] permet juste d'arrêter là le cycle en cours mais Apache reprend aussitôt les règles pour les réappliquer et voir si on aboutit à une URL qui n'est plus modifiée.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h51.


 
 
 
 
Partenaires

Hébergement Web