IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Empêcher l'accès direct à une URL .php réécrite


Sujet :

Apache

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 22
    Points
    22
    Par défaut Empêcher l'accès direct à une URL .php réécrite
    Bonjour je souhaiterais à partir de l'url rewriting empêcher un utilisateur de taper http://monsite/mapage.php (en renvoyant une page 404) mais cette page serais accessible via http://monsite/rubrique1
    mon .htaccess se présente comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Options +FollowSymlinks
    RewriteEngine on
     
    RewriteBase   /
     
    RewriteRule      ^rubrique1$                    /publication.php [L]
    RewriteRule      ^rubrique2$                    /publication.php [L]
     
    RewriteRule     ^publication\.php$              error404 [L]
    et aucune page n'est accessible malgré les flag [L]
    j ai aussi essayé de passer par une condition en testant avant, après avec SCRIPT_URI, REQUEST_URI etc ... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    RewriteCond     %{SCRIPT_URL}                   ^publication\.php$
    RewriteRule     ^publication\.php$              error404 [L]
     
    RewriteRule      ^rubrique1$                    /publication.php [L]
    RewriteRule      ^rubrique2$                    /publication.php [L]
    dans ce cas là toutes les pages ne sont plus accessibles.

    Y a t-il un moyen de faire ce que je voudrais ?

    Merci

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Ca s'appelle la protection contre le hotlinking ce que tu cherches à faire. Fais une recherche sur le forum Apache avec ce mot-clé ou demande à l'ami Gougueule.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    Je pense je me suis mal exprimé désolé je voudrais que l'utilisateur puisse taper directement l'url : http://monsite/rubrique1 (qui est http://monsite/publication.php) mais si il tape http://monsite/publication.php il tombera sur une page 404. Je veux interdire cet url : http://monsite/publication.php

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    J'ai surtout lu beaucoup trop vite Désolé

    En gros, ta difficulté c'est détecter quand on accède directement à publication.php vs. on accède à publication.php suite à une réécriture. Ce n'est pas compliqué : il suffit d'ajouter un paramètre d'URL pipeau ou définir une variable d'environnement puis détecter si ce paramètre ou cette variable existe quand on demande publication.php. Version avec paramètre d'URL bidon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Options +FollowSymlinks
    RewriteEngine on
     
    RewriteBase   /
     
    RewriteRule      ^rubrique1$                    /publication.php?reecriture=1 [L,QSA]
    RewriteRule      ^rubrique2$                    /publication.php?reecriture=1 [L,QSA]
     
    # Erreur 404 si reecriture=1 n'existe pas dans la query string
    RewriteCond %{QUERY_STRING} !reecriture=1
    RewriteRule     ^publication\.php$              - [R=404,L]
    Je ne suis pas sûr du R=404. Si ça ne marche pas (i.e. si ça ne renvoie pas un code 404 au navigateur), il faut réécrire vers une page 404.php qui forcera le code 404 (header("404 Not Found")).
    Version avec variable d'environnement, peut-être plus élégante car elle ne pollue pas la query string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Options +FollowSymlinks
    RewriteEngine on
     
    RewriteBase   /
     
    RewriteRule      ^rubrique1$                    /publication.php?reecriture=1 [E=reecriture:1,L]
    RewriteRule      ^rubrique2$                    /publication.php?reecriture=1 [E=reecriture:1,L]
     
    # Erreur 404 si la variable d'environnement reecriture n'existe pas
    RewriteCond %{ENV:reecriture} !1
    RewriteRule     ^publication\.php$              - [R=404,L]

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    Ta première solution fait exactement ce que je voulais merci beaucoup
    Pour la 2° solution j' ai du mettre %{ENV:REDIRECT_reecriture} pour la faire marcher voilou encore merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Empêcher l'accès direct à une page JSF
    Par TheJoe dans le forum JSF
    Réponses: 7
    Dernier message: 03/08/2012, 13h22
  2. Réponses: 3
    Dernier message: 17/06/2010, 19h40
  3. Empêcher l'accès direct à une page avec les sessions
    Par Loupinou dans le forum Langage
    Réponses: 4
    Dernier message: 18/07/2009, 18h25
  4. Réponses: 4
    Dernier message: 07/06/2008, 21h07
  5. [PHP-JS] interdire l'accès direct à une page php
    Par clem037 dans le forum Langage
    Réponses: 10
    Dernier message: 17/03/2008, 22h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo