Version complète: sur le forum Webmaster Hub : apache2.conf, mod rewrite et limitation d'accès par IP
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
Dadou
Bonjour à tous, cela fait un moment que je ne me suis pas manifesté sur le hub, je ne suis pas mort, je n'ai pas déserté non plus, mais une grosse mission chez un client avec un accès internet très limité (je n'ai même pas accès à mes mails)

Il m'arrive un petit problème :

J'ai une appli qui doit utiliser l'url rewriting (c'est précisé dans les specs), jusque la pas de soucis, sur mon serveur de dev, je met en place le mod rewrite, et je fais joujoux avec un .htaccess.

Cette appli doit aussi gérer un accès limité par ip à un dossier (en l'occurrence le dossier d'admin du site), bon, un petit .htaccess sur ce dossier, et le tour est joué.

Mais voila, on me dit maintenant, que sur le serveur de prod pas de .htaccess, et que ces réglages sont directement à faire au niveau du fichier apache2.conf.


Alors ma question, est ce possible, si oui comment?

Merci d'avance
Dan
Tu peux mettre les directives de réécriture soit dans le fichier .htaccess, soit dans le fichier de configuration Apache... c'est totalement équivalent sur le plan de la syntaxe.

Les règles, y compris le "RewriteEngine on" viennent dans le <Directory>, par exemple après la ligne "Options ..."
manub72
Bonjour,

j'ai déjà eu ce genre de problème avec un client. Pour l'hébergeur, le dossier 'admin' (qui était celui où j'avais placé le code pour l'administration du site) était un dossier géré directement au niveau de la configuration d'apache et pas dans le htaccess, parce que ce dossier contenait en particulier les accès aux logs serveur, etc.
Du coup, plusieurs choses :
1- ne pas appeler le dossier d'administration 'admin' (je ne le ferai plus à l'avenir...)
2- les droits au niveau du dossier sont gérés soit en passant un mail à l'hébergeur avec les ip à autoriser...
3- ... soit au niveau d'un script qui gère les autorisations d'accès aux pages de l'administration et qui est inclus en tête de chacune, dans lequel tu mets les ip autorisées.
Dadou
Ok, sur ma conf Wampserver (avant de faire joujoux sur le serveur, je préfère tester en local wink.gif ) je si fais comme ça c'est bon ?

CODE
<Directory "D:/wamp/www/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order Deny,Allow
    Allow from all

# Activation de la ré-écriture d'url
   RewriteEngine on
  
# choix de l'encodage par défaut
   AddDefaultCharset UTF-8  

# Pages erreurs
   ErrorDocument     404     404.htm
   ErrorDocument     403     403.htm     

# Echappement des règles de ré-écritures
   RewriteRule     ^admin/(.*)$     admin/$1     [L]

# Routage vers index.php
   RewriteRule     (.*)$     index.php?params=$1     [QSA,L]

</Directory>

<Directory "D:/wamp/www/admin">
    Options Indexes FollowSymLinks
    AllowOverride all
    order allow,deny
    Allow from 10

</Directory>



CITATION(manub72 @ lundi 21 juillet 2008 à 11:07) *
Bonjour,

j'ai déjà eu ce genre de problème avec un client. Pour l'hébergeur, le dossier 'admin' (qui était celui où j'avais placé le code pour l'administration du site) était un dossier géré directement au niveau de la configuration d'apache et pas dans le htaccess, parce que ce dossier contenait en particulier les accès aux logs serveur, etc.
Du coup, plusieurs choses :
1- ne pas appeler le dossier d'administration 'admin' (je ne le ferai plus à l'avenir...)


ça c'est ok (malgré mon exemple ci-dessus, j'ai bien renommé le dossier d'admin wink.gif)
Dan
Pas trop cool tes règles ! wink.gif

Tu devrais mettre
CODE
# Pages erreurs
   ErrorDocument     404     /404.htm
   ErrorDocument     403     /403.htm


Je ne comprends pas à quoi sert celle-ci ???
CODE
# Echappement des règles de ré-écritures
   RewriteRule     ^admin/(.*)$     admin/$1     [L]


Et puis, avant
CODE
   RewriteRule     (.*)$     index.php?params=$1     [QSA,L]


Tu devrais mettre
CODE
   RewriteRule index.php - [L]

sinon la règle précédente bouclerait à l'infini !
Dadou
CITATION(Dan @ lundi 21 juillet 2008 à 11:45) *
Pas trop cool tes règles ! wink.gif

Tu devrais mettre
CODE
# Pages erreurs
   ErrorDocument     404     /404.htm
   ErrorDocument     403     /403.htm


Ah oui en effet c'est mieux

CITATION(Dan @ lundi 21 juillet 2008 à 11:45) *
Je ne comprends pas à quoi sert celle-ci ???
CODE
# Echappement des règles de ré-écritures
   RewriteRule     ^admin/(.*)$     admin/$1     [L]


En fait cette règle me permet que le dossier admin ne soit pas affecté par la règle suivante

CITATION(Dan @ lundi 21 juillet 2008 à 11:45) *
Et puis, avant
CODE
   RewriteRule     (.*)$     index.php?params=$1     [QSA,L]


Cette règle me renvois tout vers le fichier index.php et je récupère dans la variable params l'url demandé

CITATION(Dan @ lundi 21 juillet 2008 à 11:45) *
Tu devrais mettre
CODE
   RewriteRule index.php - [L]

sinon la règle précédente bouclerait à l'infini !


La c'est moi qui comprend pas, elle fait quoi cette ligne de ré-écriture? parce que dans mon .htaccess ça boucle pas wacko.gif
Dan
Tu devrais remplacer ta règle admin par
CODE
RewriteRule admin.php - [L]

le signe moins dit "ne rien faire".... c'est la même chose que pour la ligne index.php que je te suggère de mettre aussi.
Dadou
Ok et pour un dossier c'est

CODE
RewriteRule admin/ - [L]


ou

CODE
RewriteRule admin - [L]



Sinon, la règle pour la limitation par ip du dossier admin c'était bon?
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.