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 :

[.htaccess] Pourquoi cette redirection ne marche pas ?


Sujet :

Apache

  1. #1
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut [.htaccess] Pourquoi cette redirection ne marche pas ?
    Bonjour,

    J'ai écrit une redirection assez simplement dans le .htaccess d'un projet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine on
     
    RewriteCond $1 !^(index\.php|images|flash|css|descriptors|js|videos|robots\.txt)
    RewriteRule ^(.*)$ /index.php/$1 [L]
    En effet je travaille avec CodeIgniter et je voudrais que ce soit la page /mon_projet/index.php/homepage qui soit appelée quand on tape /mon_projet/homepage dans la barre d'adresse.

    Mais quand je tape http://localhost/mon_projet/homepage dans la barre d'adresses, j'obtiens une erreur 404,alors que ça marche avec http://localhost/mon_projet/index.php/homepage

    Je précise que si j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)$ http://google.fr [L]
    à la dernière ligne, la redirection fonctionne bien.

    Alors, d'où vient le problème ?

    Merci pour votre aide.

  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
    Tu peux donner le .htaccess complet ? Je ne comprends pas le RewriteCond que tu donnes (le $1 en premier membre) et je ne comprends pas la différence entre les 2 RewriteRules (je ne vois pas pourquoi le second RewriteRule fonctionnerait et pas le premier).

    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

  3. #3
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut
    C'est le .htaccess complet que j'ai donné.

    La ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)$ /index.php/$1 [L]
    signifie que si on donne http://localhost/mon_projet/n_importe_quelle_page dans la barre d'adresse, il faut rediriger vers http://localhost/mon_projet/index.ph...te_quelle_page .

  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 .htaccess se trouve dans le répertoire mon_projet ? Si oui, il faut retirer le / devant index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(.*)$ index.php/$1 [L]
    car /index.php fait reconstruire l'URL depuis la racine du site : http://site.com/index.php/homepage.

    Après, j'ai toujours un doute sur le RewriteCond : pour moi, on ne peut pas utiliser $1 dans le RewriteCond, mais je peux me tromper.

    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

  5. #5
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut
    Merci pour ta suggestion... Malheureusement le problème reste le même. En plus, j'ai des potes qui travaillent sur le même projet, et pour eux la redirection avec l'utilisation de $1 marche sans problème

  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
    Essaie ce .htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Options -MultiViews
     
    RewriteEngine on
     
    RewriteCond %{REQUEST_FILENAME} !^(index\.php|images|flash|css|descriptors|js|videos|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L]
    à mettre dans le répertoire mon_projet (à cause du / que j'ai retiré devant index.php).

    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

  7. #7
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut
    J'obtiens une erreur 500 "Internal Server Error". D'ailleurs en essayant d'accéder à http://localhost/mon_projet/index.php/homepage , aussi.

    Dans le log d'erreur d'Apache, la ligne suivante s'est ajoutée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Sun Mar 14 17:11:02 2010] [alert] [client 127.0.0.1] C:/Program Files/Zend Server 5/Apache2/htdocs/mon_projet/.htaccess: Options not allowed here
    Il y aura un paramètre à activer quelque part ? Dans le httpd.conf peut-être ?

    Merci en tout cas !

  8. #8
    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
    Oui : il faudrait mettre
    mais d'abord, essaie sans la ligne Options -MultiViews, pour voir.

    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

  9. #9
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut
    Sans la ligne avec les options, ça me fait des errors 500 (avec ou sans /index.php dans l'adresse), et dans le log j'ai obtenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Sun Mar 14 23:14:12 2010] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
    Je crois qu'il se redirige en boucle... Pff... Quand je pense à toute la complexité d'Apache, et que je n'arrive pas à faire marcher une simple redirection...

  10. #10
    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
    Effectivement, il faut retirer le ^ dans le second membre du RewriteCond. Mais pour le coup, si on fait ça, la condition devient plus générique, ce qui n'est pas top. Et après consultation de la doc Apache, on peut utiliser $1 comme premier paramètre d'un RewriteCond. Mea culpa. Le .htaccess initial devrait donc fonctionner mais sans le / devant index.php.

    Du coup, reprends le .htaccess initial sans le / devant index.php et ajoute le Options -MultiViews au tout début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine on
     
    RewriteCond $1 !^(index\.php|images|flash|css|descriptors|js|videos|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L]
    Ensuite, modifie la directive AllowOverride du document root pour mettre le fameux

    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

  11. #11
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut
    Bon, j'ai l'impression que dans le httpd.conf il y a déjà ça... . Je cite les lignes correspondantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    DocumentRoot "C:\Program Files\Zend Server 5\Apache2/htdocs"
    #
    # Each directory to which Apache has access can be configured with respect
    # to which services and features are allowed and/or disabled in that
    # directory (and its subdirectories). 
    #
    # First, we configure the "default" to be a very restrictive set of 
    # features.  
    #
    <Directory />
        Options FollowSymLinks
        AllowOverride All
        Order deny,allow
        Deny from all
    </Directory>
     
    <Directory "C:\Program Files\Zend Server 5\Apache2/htdocs">
        #
        # Possible values for the Options directive are "None", "All",
        # or any combination of:
        #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
        #
        # Note that "MultiViews" must be named *explicitly* --- "Options All"
        # doesn't give it to you.
        #
        # The Options directive is both complicated and important.  Please see
        # http://httpd.apache.org/docs/2.2/mod/core.html#options
        # for more information.
        #
        Options Indexes FollowSymLinks
        #
        # AllowOverride controls what directives may be placed in .htaccess files.
        # It can be "All", "None", or any combination of the keywords:
        #   Options FileInfo AuthConfig Limit
        #
        AllowOverride FileInfo
        #
        # Controls who can get stuff from this server.
        #
        Order allow,deny
        Allow from all
    </Directory>
     
    <IfModule dir_module>
        DirectoryIndex index.php index.html
    </IfModule>
    #
    # The following lines prevent .htaccess and .htpasswd files from being 
    # viewed by Web clients. 
    #
    <FilesMatch "^\.ht">
        Order allow,deny
        Deny from all
        Satisfy All
    </FilesMatch>
    En tout cas, en changeant le .htaccess, j'ai encore les erreurs 500

  12. #12
    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
    Modifie le AllowOverride du bloc <Directory "C:\Program Files\Zend Server 5\Apache2/htdocs">.

    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

  13. #13
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut
    En mettant AllowOverride à All dans ce bloc-là, j'obtiens une 404 sur http://localhost/mon_projet/homepage et ça marche pour http://localhost/mon_projet/index.php/homepage .

  14. #14
    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
    Tu as mis Options -MultiViews tout en haut de ton .htaccess ? Tu peux le redonner en entier ?

    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

  15. #15
    Inscrit
    Profil pro
    aaaaa
    Inscrit en
    Novembre 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : aaaaa

    Informations forums :
    Inscription : Novembre 2006
    Messages : 178
    Points : 70
    Points
    70
    Par défaut
    Voici le .htaccess en entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Options -MultiViews
     
    RewriteEngine on
     
    RewriteCond $1 !^(index\.php|images|flash|css|descriptors|js|videos|robots\.txt)
    RewriteRule ^(.*)$ index.php/$1 [L]

  16. #16
    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
    Je ne comprends pas le problème : chez moi, il marche très bien ! Il est dans quel répertoire, ce .htaccess ?

    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

Discussions similaires

  1. pourquoi cette fonction ne marche pas?
    Par kazannova dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/04/2008, 01h59
  2. Problem variable (Cette ligne ne marche pas sous FF)
    Par Death83 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 08/09/2005, 17h52
  3. Redirection 404 marche pas en local
    Par le mage tophinus dans le forum Apache
    Réponses: 8
    Dernier message: 10/06/2005, 08h12
  4. [BCB5][FB1.5]Pourquoi cette commande ne fonctionne pas ?
    Par Sitting Bull dans le forum Débuter
    Réponses: 1
    Dernier message: 17/11/2004, 16h27
  5. Pourquoi ce trigger ne marche pas ??
    Par Le Basque dans le forum Développement
    Réponses: 4
    Dernier message: 20/09/2004, 15h46

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