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 et .htaccess


Sujet :

Apache

  1. #1
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 450
    Points
    19 450
    Par défaut URL rewriting et .htaccess
    Bonjour.

    Avant toute chose je ne suis pas un expert apache (encore moins apache2) ni pour les fichiers .htaccess. Voici le problème :

    Je débute avec l'url rewriting et j'ai un petit fichier .htaccess qui fonctionne très bien sur le serveur de mon hébergement. Seulement je dois avoir une copie du site en local sous une Kubuntu 9.10 avec apache2 ... J'ai donc essayé, comme l'indique ce tuto, d'ajouter les lignes LoadModule rewrite_module libexec/mod_rewrite.so et AddModule mod_rewrite.c successivement dans les fichiers /etc/apache2/apache2.conf et /etc/apache2/httpd.conf (pas en même temps bien entendu). Dans les deux cas, en faisant un sudo /etc/init.d/apache2 restart j'obtiens cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    idriss@precario-c700:~$ sudo /etc/init.d/apache2 restart
     * Restarting web server apache2                                                                                       * We failed to correctly shutdown apache, so we're now killing all running apache processes. This is almost certainly suboptimal, so please make sure your system is working as you'd expect now!
     ... waiting apache2: Syntax error on line 238 of /etc/apache2/apache2.conf: Cannot load /etc/apache2/libexec/mod_rewrite.so into server: /etc/apache2/libexec/mod_rewrite.so: cannot open shared object file: No such file or directory
                                                                                                                   [fail]
    Et quand je vire ces deux lignes apache se relance sans problèmes ...

    J'ai essayé de voir sans succès comment installer les modules manquant.

    Voici le contenu du fichier .htaccess :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    RewriteEngine On
    RewriteBase /
    RewriteRule    ^index.html$  index.php [L]
    RewriteRule    ^accueil.html$  index.php [L]
    RewriteRule    ^plan.html$  index.php?mode=plan [L]
    RewriteRule    ^inscription.html$  index.php?mode=inscription [L]
    RewriteRule    ^compte.html$  index.php?mode=compte [L]
    RewriteRule    ^perte_id.html$  index.php?mode=perte_id [L]
    RewriteRule    ^articles.html$  index.php?mode=articles [L]
    RewriteRule    ^annonces.html$  index.php?mode=articles&type=annonce [L]
    Pouvez-vous m'aider à faire fonctionner ce .htaccess en locale ? Faut-il faire d'autres manipulations totalement différentes ? S'il vous faut le contenu des fichiers comme apache2.conf, httpd.conf (qui est vide d'ailleurs ^^ ), n'hésitez pas à me les demander.

    Merci d'avance de votre aide .
    Idriss

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    0) Supprimer vos "modifications"
    1) Activer le module de réécriture :
    2) Editer /etc/apache2/sites-enabled/default (voir autres) et s'assurer d'avoir AllowOverride à valeur FileInfo minimum pour le bloc <Directory> qui correspond au DocumentRoot (/var/www par défaut ?). Mais ça dépend comment vous avez configuré votre site et où.
    3) Relancer Apache
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (sudo) /etc/init.d/apache2 restart
    PS : la ligne AddModule conduira au non démarrage d'Apache puisqu'elle n'est plus supportée depuis la branche 2.

  3. #3
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 450
    Points
    19 450
    Par défaut
    Bonjour.

    Tout d'abord merci beaucoup de votre aide .

    Citation Envoyé par julp Voir le message
    0) Supprimer vos "modifications"
    Cela a été fait et la commande /etc/init.d/apache2 restart relance bien apache.

    Citation Envoyé par julp Voir le message
    1) Activer le module de réécriture :
    La commande semble s'être déroulé avec succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    idriss@precario-c700:~$  sudo a2enmod rewrite
    [sudo] password for idriss:                
    Enabling module rewrite.                    
    Run '/etc/init.d/apache2 restart' to activate new configuration!
    Citation Envoyé par julp Voir le message
    2) Editer /etc/apache2/sites-enabled/default (voir autres) et s'assurer d'avoir AllowOverride à valeur FileInfo minimum pour le bloc <Directory> qui correspond au DocumentRoot (/var/www par défaut ?). Mais ça dépend comment vous avez configuré votre site et où.
    Je n'ai pas de fichier /etc/apache2/sites-enabled/default mais j'ai un fichier /etc/apache2/sites-enabled/000-default qui semble correspondre. J'y ai changé cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DocumentRoot /var/www
            <Directory />
                    Options FollowSymLinks
                    AllowOverride None
            </Directory>
            <Directory /var/www/>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride None
                    Order allow,deny
                    allow from all
            </Directory>
    en cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DocumentRoot /var/www
            <Directory />
                    Options FollowSymLinks
                    AllowOverride FileInfo
            </Directory>
            <Directory /var/www/>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride FileInfo
                    Order allow,deny
                    allow from all
            </Directory>
    Citation Envoyé par julp Voir le message
    3) Relancer Apache
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (sudo) /etc/init.d/apache2 restart
    J'ai bien relancé apache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    idriss@precario-c700:~$ sudo /etc/init.d/apache2 restart
     * Restarting web server apache2                                                                                      apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
     ... waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
                                                                                                                   [ OK ]
    Mais je ne constate aucune différence (toujours l'erreur 404).

    Citation Envoyé par julp Voir le message
    PS : la ligne AddModule conduira au non démarrage d'Apache puisqu'elle n'est plus supportée depuis la branche 2.
    Merci du renseignement .

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Il ne faut pas toucher au bloc <Directory />.

    Où le site est-il physiquement situé (si ce n'est pas /var/www/, le RewriteBase est faux et il y a éventuellement d'autres <Directory> à modifier) ? Quelle est l'URL demandée ? Quelle est la trace dans le journal de l'erreur ?

  5. #5
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 450
    Points
    19 450
    Par défaut
    Citation Envoyé par julp Voir le message
    Il ne faut pas toucher au bloc <Directory />.
    Très bien, j'ai remis None dans ce bloc.

    Citation Envoyé par julp Voir le message
    Où le site est-il physiquement situé (si ce n'est pas /var/www/, le RewriteBase est faux et il y a éventuellement d'autres <Directory> à modifier) ? Quelle est l'URL demandée ? Quelle est la trace dans le journal de l'erreur ?
    Le site se trouve bien dans un sous-répertoire de /var/www et j'ai aussi essayé d'ajouter un bloc <Directory /var/www/infoslinux> (infoslinux étant un sous répertoire de /var/www) avec AllowOverride FileInfo à l'intérieur ... sans succès.

    J'ai sinon demandé plusieurs URLs pour tester :

    http://localhost/infoslinux/accueil.html
    http://localhost/infoslinux/index.html
    http://127.0.0.1/infoslinux/accueil.html
    http://127.0.0.1/infoslinux/index.html
    http://127.0.1.1/infoslinux/accueil.html
    http://127.0.1.1/infoslinux/index.html
    etc
    sachant que les URLs
    http://localhost/infoslinux/index.php
    http://127.0.0.1/infoslinux/index.php
    http://127.0.1.1/infoslinux/index.php
    fonctionnent ....

    Merci de votre aide ...

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Alors, un bloc <Directory> pour /var/www/infoslinux n'est pas nécessaire puisque vous hériteriez ainsi de celui de /var/www.

    Ensuite, comme écrit plus haut, le RewriteBase, si vous voulez le gardez (il n'est pas requis ici), est faux : RewriteBase /infoslinux/


    PS : les points, dans les motifs (premier paramètre de RewriteRule), devraient être échappés. Le point étant un métacaractère à signification "tout caractère".

  7. #7
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 450
    Points
    19 450
    Par défaut
    Citation Envoyé par julp Voir le message
    Ensuite, comme écrit plus haut, le RewriteBase, si vous voulez le gardez (il n'est pas requis ici), est faux : RewriteBase /infoslinux/
    Merci énormément ... ça fonctionne !

    Citation Envoyé par julp Voir le message
    Alors, un bloc <Directory> pour /var/www/infoslinux n'est pas nécessaire puisque vous hériteriez ainsi de celui de /var/www.
    Très bien, je m'en doutais un peu ...

    Citation Envoyé par julp Voir le message
    PS : les points, dans les motifs (premier paramètre de RewriteRule), devraient être échappés. Le point étant un métacaractère à signification "tout caractère".
    Merci du renseignement j'y veillerais ...

    Encore merci, problème résolus.

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

Discussions similaires

  1. soucis avec url rewrite et htaccess
    Par cameleon93 dans le forum Langage
    Réponses: 8
    Dernier message: 25/04/2009, 18h32
  2. url rewriting dans htaccess
    Par dl_jarod dans le forum Apache
    Réponses: 1
    Dernier message: 04/11/2008, 17h51
  3. Réponses: 8
    Dernier message: 03/10/2008, 14h38
  4. Réponses: 5
    Dernier message: 27/03/2008, 16h45
  5. [URL Rewriting] mon .htaccess tue mon css
    Par 7studio dans le forum Apache
    Réponses: 1
    Dernier message: 04/01/2008, 19h56

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