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 avec mod_rewrite


Sujet :

Apache

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 138
    Par défaut URL Rewriting avec mod_rewrite
    Bonjour,

    L'URL actuelle de mon site (local) est comme suit :
    http://www.monsite.com/UI/Home

    Cependant, j'aimerai que l'url affichée et utilisée par les utilisateurs soit :
    http://www.monsite.com/Home

    J'ai fait une recherche sur l'URL rewriting et j'ai trouvé ce site :
    http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

    J'ai créé un fichier .htaccess que j'ai mis à la racine de mon site (www.monsite.com), puis j'ai écrit la règle suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine on
    RewriteRule   ^/Home/(.*)  /UI/Home/$1
    Mais ça ne marche malheureusement pas. Je doit certainement avoir une erreur quelque part... Comment d'ailleurs savoir s'il n'y a pas d'erreur dans le fichier .htaccess d'un site ? (log sur le serveur ou autre ?)

    Merci par avance !

  2. #2
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut
    Quand tu dis "ça ne marche pas", quelle est l'erreur que tu rencontres ?

  3. #3
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut
    Bonjour,

    J'ai un problème très similaire. ( effacez mon post si je dois créer un sujet séparé )

    Chemin de la racine de mon site: /home/mondomaine/www/site
    En fait, mon site n'est pas directement dans www, mais dans le sous-dossier site

    J'ai essayé de mettre dans .htaccess de www :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # Rewrite to www
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\mon_domaine.com\.com [NC]
    RewriteRule (.*) http://www.mon_domaine.com/$1 [QSA,R=301,L]
     
    RedirectMatch permanent ^/(index\.html|index\.php)?$ http://www.mon_domaine.com/site/
    losqu'on tape: mon_domaine.com => il s'affiche: http://www.mon_domaine.com et le portail du site s'affiche, donc là pas de problème,
    mais lorsqu’on veut afficher les autres pages du sites, il s'affiche :
    http://mon_domaine.com/site/la_page_demandée.php

    au lieu de :

    http://www.mon_domaine.com/la_page_demandée.php

  4. #4
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut
    J'imagine que "site" désigne les dossiers contenant tout ton site ?
    Dans ce cas, le fichier htaccess doit en faire partie.

    Essaie ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Options +FollowSymlinks
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^mon_domaine.com
    RewriteRule (.*) http://www.mon_domaine.com/$1 [R=301,L]
     
    RewriteCond %{THE_REQUEST} \/index.php\ HTTP [NC]
    RewriteRule (.*)index.php$ /$1 [R=301,L]

  5. #5
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut
    Merci de la réponse.

    Oui, "site" désigne LE dossier contenant tout mon site, y compris le index.php.

    Mais lorsqu'on tape:
    http://mon_domaine.com
    on arrive sur www (qui ne contient que .htaccess )
    puis on est redirigé sur le dossier "site" grâce au .htaccess de redirection que j'ai mentionné plus haut

    Dans le .htaccess du dossier "site", j'ai déjà ça , les lignes sont à ajouter à quel endroit dans ce fichier ?:

    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
    SetEnv PHP_VER 5
    SetEnv REGISTER_GLOBALS 0
    # Deny access to config.php
    <Files config.php>
    order allow,deny
    deny from all
    </Files>
     
    # CMSMS Rewriting
    # Set assume mod_rewrite to true in config.php and clear CMSMS cache
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /site
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)$ index.php?page=$1 [QSA]
    # END CMSMS
    # END Rewrite rules

  6. #6
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut
    Ton htaccess doit être au même niveau que index.php.

    Rajoute simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteCond %{HTTP_HOST} ^mon_domaine.com
    RewriteRule (.*) http://www.mon_domaine.com/$1 [R=301,L]
     
    RewriteCond %{THE_REQUEST} \/index.php\ HTTP [NC]
    RewriteRule (.*)index.php$ /$1 [R=301,L]
    avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteCond %{REQUEST_FILENAME} !-f
    Du coup, si tu déplaces le htaccess, vérifie que cette ligne ne pose pas de problème (en enlevant "site") :

  7. #7
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut
    Donc après mofif, j'ai supprimé le .htaccess du dossier "www"
    et j'ai modifié .access du dossier "site" qui est maintenant comme cela:

    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
    SetEnv PHP_VER 5
    SetEnv REGISTER_GLOBALS 0
    # Deny access to config.php
    <Files config.php>
    order allow,deny
    deny from all
    </Files>
     
    # CMSMS Rewriting
    # Set assume mod_rewrite to true in config.php and clear CMSMS cache
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
     
    RewriteCond %{HTTP_HOST} ^mon_domaine.com
    RewriteRule (.*) http://www.mon_domaine.com/$1 [R=301,L]
     
    RewriteCond %{THE_REQUEST} \/index.php\ HTTP [NC]
    RewriteRule (.*)index.php$ /$1 [R=301,L]
     
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)$ index.php?page=$1 [QSA]
    # END CMSMS
    # END Rewrite rules
    Maintenant (après avoir vidé le cache du navigateur) lorsqu'on tape:

    http://mon_domaine.com ou bien http://www.mon_domaine.com =>
    la page d'erreur 'normale' s’affiche, puisque le dossier www est maintenat vide (plus de htaccess de redirection vers le dossier "site"
    Forbidden
    You don't have permission to access / on this server.


    et en tapant :
    http://mon_domaine.com/site/ => l'URL affichée devient http://www.mon_domaine.com/site/
    mais la page index.php s'affiche sans mise en forme !
    et ensuite les autres pages du site ne s'affichent pas , car dans l'URL qui s'affiche il manque /site/:
    p.ex.: www.mon_domaine.com/la_page_demandee

    Not Found
    The requested URL /la_page_demandee was not found on this server.


    et en supprimant la ligne:
    RewriteBase /
    c'est pareil ...

  8. #8
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut
    Pour mieux comprendre, voici la config du virtualHost d'Apache2:
    Je rappelle que le chemin de la racine de mon site: /home/mondomaine/www/site
    et non pas la racine du domaine : www

    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
    <virtualHost *:80>
            ServerAdmin contact@mon_domaine.com
            ServerName www.mon_domaine.com
            ServerAlias mon_domaine.com
            DocumentRoot /home/mondomaine/www
            <Directory />
                    Options FollowSymLinks
                    AllowOverride All
            </Directory>
     
            <Directory /home/mondomaine/www>
                    Options FollowSymLinks MultiViews
                    AllowOverride All
                    Order allow,deny
                    allow from all
            </Directory>
     
            ErrorLog ${APACHE_LOG_DIR}/error.log
            LogLevel warn
            CustomLog ${APACHE_LOG_DIR}/access.log combined
     
    </VirtualHost>

  9. #9
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut
    mais la page index.php s'affiche sans mise en forme !
    c'est probablement que le chemin vers la CSS n'est pas bon.

    Question : pourquoi ne pas mettre tes fichiers en racine du domaine, plutôt que dans le dossier site ? Tu utilises un CMS j'imagine ?

  10. #10
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut
    C'était la grande question que je me posais ! ( et que je me pose encore )
    Effectivement tout serait résolu en mettant simplement le site dans la racine du domaine, c'est ce que je me disais.
    Mais on m'a vivement conseillé de le mettre dans un sous-dossier à part pour la raison suivante: sur mon_domaine j'ai un site ( cmsmadesimple ) et je compte y mettre aussi un blog et un forum.
    Donc on m'a dit que si je mettais tout dans le même dossier www : cms+forum+blog etc .. ce serait difficile à gérer et surtout difficile à mettre à jour.

    Pensez-vous que ce site qui sera le site principal, serait mieux à la racine du domaine quitte à mettre le blog et forum dans des dossiers séparés ? Et les redirections ( par .htaccess) vers des sous dossiers n'empêchent elles pas une bonne indexation par les moteurs de recherche ?

  11. #11
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut
    Pensez-vous que que ce site qui sera le site principal, serait mieux à la racine du domaine quitte à mettre le blog et forum dans des dossiers séparés ?
    C'est exactement ce que j'allais te soumettre, je ne vois pas bien où est la complication du moment que tes dossiers sont nommés précisément. Il me semble normal que le site principal soit à la racine du domaine, c'est l'inverse qui crée des complications (la preuve )

    Et les redirections ( par .htaccess) vers des sous dossiers n'empêchent elles pas une bonne indexation par les moteurs de recherche ?
    A priori, et sauf erreur, toute redirection bien faite n'engendre pas de problème d'indexation. De toute façon, tu n'es pas obligé de faire des redirections si tu envoies les visiteurs du blog vers mon_domaine.com/blog.

  12. #12
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut
    Merci pour le conseil qui conforte ce que que je pense ... je vais tout mettre dans la racine du domaine et les autres applications dans des sous-dossiers ... pour simplifier les choses

    Merci encore pour l'aide

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 138
    Par défaut
    Bonjour,

    (Je n'ai pas reçu les notifications de réponses... désolé du retard donc )

    Merci pour les précisions, en fait, en faisant une recherche plus approfondie, mon problème venait essentiellement de la configuration easyphp en effet et de l'oubli du RewriteBase !

    Merci pour tout !

  14. #14
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Citation Envoyé par Doudy Voir le message
    Mais on m'a vivement conseillé de le mettre dans un sous-dossier à part pour la raison suivante: sur mon_domaine j'ai un site ( cmsmadesimple ) et je compte y mettre aussi un blog et un forum.
    Donc on m'a dit que si je mettais tout dans le même dossier www : cms+forum+blog etc .. ce serait difficile à gérer et surtout difficile à mettre à jour.
    C'est à ça que servent les virtualhost apache.
    Tu peux en avoir plusieurs avec pour chacun un documentRoot différent qui contient le contenu d'un site.
    Comme ça personne ne se marche dessus et c'est bien plus propre.

Discussions similaires

  1. [URL Rewriting] avec titres textuels
    Par dl_jarod dans le forum Apache
    Réponses: 13
    Dernier message: 23/01/2008, 14h13
  2. url rewriting avec tomcat en standalone
    Par julien20vt dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 18/01/2008, 13h59
  3. URL Rewriting avec lettres
    Par Alexandrebox dans le forum Apache
    Réponses: 7
    Dernier message: 22/11/2007, 13h22
  4. Si vous avez des questions sur Apache, HTAccess, URL rewriting avec Apache, etc
    Par Marc Lussac dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 28/08/2007, 19h09
  5. [URLRewriting] URL Rewrite avec Language
    Par Prosis dans le forum Apache
    Réponses: 15
    Dernier message: 28/02/2007, 19h28

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