[RESOLU] mod_rewrite pourtant activé

Eléphant du PHP | 363 Messages

16 janv. 2013, 18:11

Bonjour à tous et meilleurs vœux.

J'ai un gros souci sur "mon" serveur. J'essaie désespérément de faire une réécriture d'url (sans redirection) pour rendre plus jolies mes url mais impossible de faire fonctionner le schmurtz, je m'explique :

Mon site se trouve dans un environnement lamp et utilise le CMS SPIP.

Mes url ressemblent à des trucs du genre :

http://foetus69.chezmoi.fr/spip.php?pag ... &langue=fr

et je voudrais que cette url, tout en gardant ces variables pour permettre l'interprétation m'affiche :

http://foetus69.chezmoi.fr/commande
ou bien
http://foetus69.chezmoi.fr/order (pour l'anglais)

et que si je pointe sur http://foetus69.chezmoi.fr/order ca fasse bien référence à : http://foetus69.chezmoi.fr/spip.php?pag ... &langue=en

Que me faut-il concrètement pour activer cette réécriture au niveau du serveur, (un htaccess ?) car j'ai essayé pleins de syntaxe dans mon httpd.conf et mon redhat ne veut rien savoir. Je suis en php5, que dire d'autre...on doit s'affranchir des urls de spip ?

Merci à celui/ceux qui m'aidera/ont.

Tite fée !
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

ViPHP
ViPHP | 5924 Messages

16 janv. 2013, 18:34

Première chose, es-tu sûr que le mod_rewrite est bien activé sur ton serveur httpd ?
Il te faut une directive "LoadModule" correspondant au mod_rewrite.

Eléphant du PHP | 363 Messages

16 janv. 2013, 18:46

Toujours les mêmes ^^

Oui oui c'est bien activé j'ai dans mon apache2handler mod_rewrite au niveau des Loaded Modules, idem la ligne est décommentée (pas de #) dans le fichier.

et je commence ma réécriture dans le .conf par

<IfModule rewrite_module>
RewriteEngine on

F.
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

ViPHP
ViPHP | 5924 Messages

16 janv. 2013, 19:03

Toujours les mêmes ^^
Chacun ses spécialités !
Oui oui c'est bien activé j'ai dans mon apache2handler mod_rewrite au niveau des Loaded Modules, idem la ligne est décommentée (pas de #) dans le fichier.
Tu as redémarré le serveur après la modification je suppose ?
et je commence ma réécriture dans le .conf par

<IfModule rewrite_module>
RewriteEngine on
Ok, et à quoi ressemble la règle de réécriture ?

Tu peux également activer le log (1 est le moins verbeux, 9 est le plus verbeux):

Code : Tout sélectionner

RewriteLoglevel 5 RewriteLog /var/log/apache2/rewrite.log
Cordialement

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 janv. 2013, 00:06

Bonjour,

Vérifie également dans ton vhost que tu ais bien un

Code : Tout sélectionner

AllowOverride All
Si il est à "None", les fichiers .htaccess ne seront pas pris en compte.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 363 Messages

18 janv. 2013, 12:26

Bonjour Messieurs,

Oui je redémarre mon apache après chaque modif du .conf. en espérant :priere:

Je n'ai pas de virtualhost dans ce cas précis, mais je peux toujours faire ce changement, c'est p'tet maintenant <=> (ok je sors ^^) :oops:

Activer les logs serait pas mal aussi.

Par contre je ne comprends pas l'interaction avec le .htaccess, est-ce qu'un âme charitable peut m'expliquer svp ? J'ai un conflit avec mon Spip, c'est ça ?
Modifier le .conf ne suffit pas ? 8-|

Bien amicalement,

Féfé
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

ViPHP
ViPHP | 5924 Messages

18 janv. 2013, 12:47

Oui je redémarre mon apache après chaque modif du .conf. en espérant :priere:
Ok ! ;)
Par contre je ne comprends pas l'interaction avec le .htaccess, est-ce qu'un âme charitable peut m'expliquer svp ? J'ai un conflit avec mon Spip, c'est ça ?
Modifier le .conf ne suffit pas ? 8-|
C'était dans le cas où tu faisais ta modification dans un .htaccess et non dans la conf générale du serveur. Je pense que @rthur n'avait pas remarqué que tu faisais tes modifications dans le httpd.conf.

Au sujet de ton spip, y a-t-il un .htaccess à la racine ? Auquel cas quel est son contenu ? (histoire de vérifier qu'il n'interfère pas avec ta réécriture).

Ensuite, au sujet de ton mod_rewrite, allons dans les détails:
  • Afin de s'assurer qu'il est bien présent et activé, tu peux retirer le "<IfModule rewrite_module>" ainsi que la balise fermante, afin d'obliger apache à interpréter les lignes suivantes. Si après ça il te dit qu'il ne comprend pas "RewriteEngine On", cela voudra dire que pour une raison ou une autre il n'arrive pas à activer le mod_rewrite. S'il ne moufte pas, c'est que le problème ne venait pas de là.
  • Ensuite, tu dis qu'il ne s'active pas, mais peut être que ta réécriture n'a aucun effet. Commence par une règle simple sur une partie non publique de ton site, par exemple (rediriger http://foetus69.chezmoi.fr/bahbahbah vers http://foetus69.chezmoi.fr/index.php ):

    Code : Tout sélectionner

    RewriteRule /bahbahbah /index.php
    Si cela fonctionne, c'est que les réécritures que tu testes ont une erreur (auquel cas tu peux nous les soumettre pour qu'on te donne notre avis), dans le cas contraire ce sera un cas intéressant à débugguer ! ;)
Cordialement

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 janv. 2013, 18:52

C'était dans le cas où tu faisais ta modification dans un .htaccess et non dans la conf générale du serveur. Je pense que @rthur n'avait pas remarqué que tu faisais tes modifications dans le httpd.conf.
Exact, au temps pour moi :)

Et je n'ai pas davantage d'idée alors ^^
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 363 Messages

25 janv. 2013, 17:22

Bonjour et merci pour votre soutien, c'est gentil !

Pour une raison ignorée, il ne fait pas la réécriture sur la première page c'est à dire que si je tape l'url avec les variables il ne me la transforme pas (normal ou pas ? J'ai p'tet pas bien compris le sens du mot réécriture) en revanche l'alias de l'url renvoie bien à ma page comme si j'avais tapé mes variables.

:o
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

ViPHP
ViPHP | 3300 Messages

25 janv. 2013, 19:05

Bonjour et merci pour votre soutien, c'est gentil !

Pour une raison ignorée, il ne fait pas la réécriture sur la première page c'est à dire que si je tape l'url avec les variables il ne me la transforme pas (normal ou pas ? J'ai p'tet pas bien compris le sens du mot réécriture) en revanche l'alias de l'url renvoie bien à ma page comme si j'avais tapé mes variables.

:o
ca ressemble à un problème de règle de match, genre tu matches tout ce qui commence par "/" alors que sur la première page il n'y a pas ça :)
Fait du php depuis que ca existe ou presque :)

ViPHP
ViPHP | 5924 Messages

27 janv. 2013, 20:05

Peux-tu poster un exemple de réécriture, ce qu'elle fait et ce qu'elle devrait faire ?

Cordialement.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 janv. 2013, 10:37

Pour une raison ignorée, il ne fait pas la réécriture sur la première page c'est à dire que si je tape l'url avec les variables il ne me la transforme pas (normal ou pas ? J'ai p'tet pas bien compris le sens du mot réécriture) en revanche l'alias de l'url renvoie bien à ma page comme si j'avais tapé mes variables.
On tiens peut-être quelque chose là !

La réécriture d'url, c'est de transformer l'url pour que PHP la voie différemment que celle que le navigateur envoie, mais ça ne change pas l'url dans le navigateur. Pour cela, il faut que ton rewrite demande une redirection au navigateur ! C'est le tag "[R]" en fin de ligne : http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 363 Messages

28 janv. 2013, 11:24

Zeus, t'es vraiment un DIEU !!! :lol:

Merci à toutes et à tous pour votre aide =D>
Dis-donc fossoyeur, t'as une dent contre moi ou quoi ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 janv. 2013, 11:44

Nuance, je prend juste le temps de comprendre ton problème au lieu de jeter des réponses en l'air ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer