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 :

[URL rewriting] N'importe quelle URl redirigée vers un site local


Sujet :

Apache

  1. #1
    Invité
    Invité(e)
    Par défaut [URL rewriting] N'importe quelle URl redirigée vers un site local
    Bonjour,

    J'essaie de monter une architecture qui imite le comportement d'un portail captif sans l'authentification. Je vous explique:

    dans un environnement public, je souhaite mettre en place un Wireless LAN sans accès à internet. Quand des clients de type smartphone se connectent au Wifi, ils sont automatiquement redirigés vers la page d'accueil du site web local (hébergé sur un serveur du LAN), quelque soit l'adresse saisie dans son navigateur.

    Pour cela, dans la première étape, j'ai mis en place sur mon serveur DNS du spoofing DNS pour qu'il réponde à n'importe quelle requête DNS l'IP de mon serveur local (192.168.1.254).

    La deuxième étape, et c'est là ou je sèche, c'est d'écrire la RewriteRule. Et je n'arrive pas à saisir le fonctionnement.

    Pour l'instant, j'ai mis dans mon fichier /etc/apache2/apache2.conf la règle suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)$ ^/index.html$
    Dans mon esprit, cette règle remplace n'importe quel chaîne dans l'URL par une chaîne vide. Mais elle ne semble pas fonctionner.

    Je précise 2 choses:

    - Quand on tape un nom de domaine de type "www.developpez.net", ça fonctionne puisque le spoofing DNS est OK. C'est si on rajoute "/quelquechose" que ça ne fonctionne pas.

    -Un phpinfo(); me précise bien que le mod_rewrite est activé.

    Cordialement,
    Etienne

    EDIT:

    voilà toute la partie du apache2.conf sur le Rewriting:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Options +FollowSymlinks
    <IfModule mod_rewrite.c>
    RewriteEngine On
    </IfModule>
     
    RewriteRule ^(.*)$ ^/index.html$ [L]

  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
    Citation Envoyé par titoukivol Voir le message
    Dans mon esprit, cette règle remplace n'importe quel chaîne dans l'URL par une chaîne vide.
    Pas du tout : telle qu'elle est, étant donné qu'elle ne fait aucune redirection du navigateur (le flag R n'est pas présent), l'URL saisie par l'utilisateur reste telle quelle. Si tu veux que la barre d'adresse du navigateur change, il faut ajouter un R entre crochets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)$ ^/index.html$ [R]
    Après, absolument tout sera redirigé sur /index.html, y compris les appels à des images et des "sous-pages" du style /quelquechose/. J'imagine que ce n'est pas exactement ce que tu veux faire : tu peux donner des détails ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour la réactivité !

    Effectivement, ce n'est pas exactement ça.

    Je souhaite que si un utilisateur tape dans sa barre d'adresse "www.developpez.net/forum/exemple/meuh" ou n'importe quelle adresse, il soit redirigé vers ma page d'accueil.

    Par contre, une fois qu'il navigue dans mon site, cliquer sur un lien interne ne doit pas le rediriger vers la page d'accueil mais vers la page ciblée.
    Pour ça, je pense qu'un RewriteCond doit marcher ?

    Le but est d'obliger le navigateur de l'utilisateur à afficher ma page d'accueil, un peu comme les hotspots dans les aéroports mais sans la partie authentification, pas adaptée à mon besoin. D'où le spoofing DNS et le URL rewrite (en admettant que c'est bien du Rewrite qui est nécessaire...)

    Et pour le moment, si l'adresse est simple ("www.google.fr/", sans rien après le "/", ça fonctionne, mais pas si il y a quelque chose après le "/")

    Est-ce suffisamment précis ?

  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
    Le plus simple c'est que tu aies un nom d'hôte pour ton site (www.monsiteamoi.com) et que tout appel à un site qui n'est pas celui-là soit redirigé dessus. Est-ce possible ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Pour le nom de domaine, ce n'est pas possible puisque le serveur est uniquement en Local est que le serveur DNS n'est pas implémenté.

    Par contre, j'ai réussi à corriger le problème des URL complexes en utilisant un fichier .htaccess à la racine plutôt que le fichier de configuration du serveur apache.

    contenu du .htaccess:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine On
    RewriteRule ^.*$ index.html
    Si on tape www.google.fr ou www.google.fr/result=id:exemple ou quoi que soit d'autre, ça marche: la redirection vers la page index.html s'effectue.

    Maintenant, le problème est que tout est redirigé, mêmes les liens internes.

    Je pense donc qu'il faut rajouter une RewriteCond pour empêcher cela.
    J'ai tenté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteCond %{HTTP_HOST} !^http://192.168.1.254(.*)$
    Mais elle ne semble pas fonctionner..

    EDIT: j'ai changé la condition et c'est un peu mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteCond %{HTTP_REFERER} !^http://192.168.1.254/.*$
    Avec cette condition, si on accède au site avec l'adresse 192.168.1.254/index.html, alors les liens fonctionnent à nouveaux, on est plus redirigé vers la page d'accueil.
    Le problème c'est que si un client a saisi par exemple www.google.fr, il est redirigé vers la page index.html de mon serveur web local, mais il semble que le HTTP_REFERER soit encore http://www.google.fr. Peut-on modifier cela, par de la réécriture d'URL ou autre ?
    Dernière modification par Invité ; 14/04/2011 à 13h25.

  6. #6
    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
    Utiliser l'IP ou un nom d'hôte spécifique, c'est la même chose. Vu que tu as configuré le DNS pour rediriger tous les noms vers ton IP, ça ne devrait pas poser le problème.

    En fait, ce que tu essaies de faire avec les conditions, c'est ce que je veux faire avec un nom. La chose fonctionnerait ainsi :


    Dans un .htaccess, ça ce passe tout simplement comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine On
     
    RewriteCond %{HTTP_HOST} !^www\.tonsiteatoi\.com$
    RewriteRule ^.*$ http://www.tonsiteatoi.com/ [R=302,L]

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/10/2014, 18h37
  2. Format des url sous Joomla, sitemap et URL Rewriting
    Par itmak dans le forum Référencement
    Réponses: 2
    Dernier message: 19/05/2009, 10h58
  3. [URL rewriting] N'importe quelle URL vers un fichier
    Par tochbee dans le forum Apache
    Réponses: 2
    Dernier message: 05/03/2009, 19h55
  4. Réponses: 6
    Dernier message: 14/04/2008, 18h00
  5. [URL Rewriting] Infos sur l'URL Rewriting
    Par Thomad dans le forum Apache
    Réponses: 2
    Dernier message: 16/09/2007, 00h13

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