Problème MAMP et .htaccess

yohann.de

Membre confirmé
1 Juin 2008
10
0
Bonjour @ tous!

Fraichement passé sur Mac (et bien décidé à y rester ^^), je suis pourtant à deux doigts du gros pétage de cable.

Je développe des sites Internet en PHP, j'ai donc naturellement installé MAMP sur mon petit portable (os 10.3.9, oui c'est un vieux Lombard 400, mais qui fait quand même le nique à mon PC :D), et là je suis en grosse galère car il semble qu'apache ne prenne pas en compte mes fichiers .htaccess. Ou plutôt qu'il décide un peu tout seul quand il les prend ou non.

Ce qui est plutôt bizarre. De ce point de vue là je dois bien avouer que WAMP sur Windows me posais moins de soucis, d'ou mon intérrogation : se pourrait-il que celà vienne d'un problème entre apache et l'os??

En fait là j'en suis à élaborer un peu tout et n'importe quoi comme théorie parce que tout ce que je fais… n'y fait rien et celà fait une semaine que ça dure…

Si quelqu'un avait une minute pour guider un pur newbee dans l'univers Mac…:up:

Quelques petites précisions sur ce que j'ai déjà fait :
Mod_rewrite => activé
Module apache intégré dans OSX => désactivé
Quelques dizaines de manip dont je ne m'en rappelle plus la moitié maintenant…

Config :
OS 10.3.9
MAMP 1.4.1
PHP 5.1.6 (de mémoire)
Apache2.0
 
Dans ton httpd.conf assure toi que AllowOverride soit bien à All dans ton directory, sinon le .htaccess n'a pas le droit de faire de modifs sur certains trucs.

Entre <Directory /> et </Directory> pour ta racine ou entre <Directory "/Users/TonNom/Sites"> et </Directory> pour ton dossiers Sites par exemple.


EDIT: j'avais pas vu ! :coucou: Bienvenue sur MacG !
 
:coucou: Bienvenue sur MacG !

Merci! :)

Dans ton httpd.conf assure toi que AllowOverride soit bien à All dans ton directory, sinon le .htaccess n'a pas le droit de faire de modifs sur certains trucs.

Entre <Directory /> et </Directory> pour ta racine ou entre <Directory "/Users/TonNom/Sites"> et </Directory> pour ton dossiers Sites par exemple.
Malheureusement c'est deux paramètres sont déjà à All (dsl j'ai pas précisé, mais c'est vrai que je commence à plus me souvenir de tout ce que j'ai fait ^^')
 
Je l'ai réduit au stricte minimum…
Bloc de code:
RewriteEngine on
RewriteRule   ^/$  public/common/index.php  [R]
Une petite explication sur mon arbo est sans doute nécessaire…
www/
----mondossierdesite/
--------app/
--------public/
------------common/
----------------index.php
--------.htaccess
La structure est simplifiée mais suffisement caractéristique pour voir ce que je cherche à faire ;)

Je veux donc rediriger toute demande qui arrive sur http://localhost/mondossierdesite vers http://localhost/mondossierdesite/public/common/index.php

Mais quoi que je fasse comme modification dans mon htaccess j'obtiens toujours une erreur 404 et dans le fichier de log j'ai juste "page inexistante"

Autre point qui me parait étrange, j'ai trouvé cette règle sur de nombreux sites traitant de la redirection sur Apache2, pourtant chez moi elle créée une erreur dans le log "bad flag delimiters", voici la règle (condition+règle) :
Bloc de code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^.* public/common/index.php$1 [QSA,L]
 
Le flag QSA c'est pour Query String Append, en gros à la place de remplacer tu ajoute à la query string. C'est un peu un bordel mais ça peut être utile :)

Bloc de code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Ça c'est juste pour dire de pas faire de réécriture si l'adresse pointe vers un fichier ou un dossier existant vraiment dans l'arborescence du serveur.


Quand à
Bloc de code:
RewriteEngine on
RewriteRule   ^/$  public/common/index.php  [R]
Ça ne fais pas ce que tu veux, essaye plutôt
Bloc de code:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /tonDossierDeSite/
RewriteRule   ^/?$  public/common/index.php  [R]
(l'option FollowSymLinks est parfois nécessaire pour que le rewrite fonctionne, je sais pas vraiment pourquoi mais ça ne paraît pas abérant...).
 
Argh, désolé mais ça ne fonctionne toujours pas.

En fait si je tape : http://localhost/mondossierdesite/
ou : http://localhost/mondossierdesite/index

J'obtiens la même chose "file does not exist" dans les logs apache.

D'ou mon intérogation sur le fait que le htaccess soit bien lu&#8230;

Ps : merci du temps que tu me consacre :)
"mondossierdesite" tu met quoi en vrai ? Et tu veux que ça pointe sur quoi (en absolute path sur ton disque dur) ?


PS: c'est un plaisir quand on est remercié :)
 
Je ne peux pas donner le nom du dossier pour des raisons de protection, mais je peux te monter la longueur et la forme : xxxxxxxxx-xxxxxxxxxx (je sais c'est un peu long, mais pas suffisament pour que ca vienne de là. Il ne me semble pas nom plus que le '-' pose problème),

Mon path en dur ou doit pointer le site est :
/Users/monnom/www/xxxxxxxxx-xxxxxxxxxx/public/common/index.php
 
Je ne peux pas donner le nom du dossier pour des raisons de protection, mais je peux te monter la longueur et la forme : xxxxxxxxx-xxxxxxxxxx (je sais c'est un peu long, mais pas suffisament pour que ca vienne de là. Il ne me semble pas nom plus que le '-' pose problème),

Mon path en dur ou doit pointer le site est :
/Users/monnom/www/xxxxxxxxx-xxxxxxxxxx/public/common/index.php
Bon, et t'as bien un truc du genre (pas forcément la même config de directory) dans ton httpd.conf ?
Bloc de code:
Alias /xxxxxxxxx-xxxxxxxxxx "/Users/monnom/www/xxxxxxxxx-xxxxxxxxxx"

<Directory "/Users/monnom/www/xxxxxxxxx-xxxxxxxxxx">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Si oui, il va falloir que tu attendes plus compétant que moi, là je ne vois aps d'où ça peut venir...
 
AAAAh attends ! C'est peut-être le caractère invisibles fous qui a encore frappé. Si tu as lu les forums ces derniers temps il a fait pas mal de victime...


Essaye de créer un nouveau fichier et d'y retaper le contenu de ton .htaccess, PAS DE COPIER-COLLER c'est justement l'intérêt de la manip' : voir si c'est pas un caractère invisible qui fait tout foirer :)
 
AAAAh attends ! C'est peut-être le caractère invisibles fous qui a encore frappé. Si tu as lu les forums ces derniers temps il a fait pas mal de victime...


Essaye de créer un nouveau fichier et d'y retaper le contenu de ton .htaccess, PAS DE COPIER-COLLER c'est justement l'intérêt de la manip' : voir si c'est pas un caractère invisible qui fait tout foirer :)

Hum, possible, j'ai déjà eu un souci avec ça c'est vrai quand j'étais sous windows.

Je viens de vérifier mon fichier de conf et j'avais mis le AllowOverride à None comme un zouave, ça c'est à force de refaire et refaire encore -_- enfin toujours est-il que ca ne fonctionne pas mieux, si je tappe http://localhost/mondossier/ j'arrive à l'index des fichiers&#8230; et si je tape http://localhost/mondossier/index j'ai droit à une belle erreur 404

Je vais retapper mon htaccess ^^

&#8230;

Edit : je viens de repenser à une question qui me trotte dans la tête, et qui pourrait peut être être la source du problème : mes fichiers htaccess sont classifiés par mac os comme des fichiers invisibles, ce qui déjà est super pas pratique puisque quand je veux travailler dessus ca m'oblige à activer l'option pour voir les fichiers cachés à partir de OnyX. Je peux les voir en passant apr le finder mais jamais les ouvrir directement avec un programme (très chiant ca aussi au passage). Donc est-ce ça ne pourrait pas venir de là??

Et dans tous les cas, y'a t'il un moyen de dire à mac OS de considérer les fichiers .htaccess comme des fichiers non-cachés?

Je retrouve à mon htaccess ^
 
Dernière édition:
Bloc de code:
RewriteRule    ^(/index)?/?$    public/common/index.php    [R]

Euh&#8230; je comprends pas ta rewriteRule, je veux bien un poil d'expliquations ^^

Sinon autre point que je viens de reconstater, et qui pourrait bien expliquer le problème.
Au passage je viens de réécrire le htaccess dans un nouveau fichier et j'ai maintenant une erreur 500 ^^Il doit donc déjà bien lire le fichier.

Avant d'aller voir dans les logs, quand j'édite mon htaccess ou que j'en créé un je fais ca avec textEdit (ou taco html edit), mais aucun ne me laisse enregistrer directement en .htaccess, ils me rajoutent systématiquement .rtf pour textedit, .php pour taco, et donc je dois faire ca a la barbare et donc renommer le fichier par la suite&#8230; pas très propre tout ça&#8230;

edit :
voilà l'erreur du log (pour l'erreur 500) :
Bloc de code:
[Sun Jun 01 18:34:04 2008] [alert] [client 127.0.0.1] /Users/monnom/www/xxxxx-xxxxxxxx/.htaccess: Invalid command '{\\rtf1\\mac\\ansicpg10000\\cocoartf102', perhaps mis-spelled or defined by a module not included in the server configuration
Là il me parle dans un sou dialecte de la chine profonde&#8230;

edit 2 :
J'ai essayé ton code pour le htaccess mais pas de changement, erreur 500
Qui a dit macNewbee :D
 
Dernière édition:
Euh… je comprends pas ta rewriteRule, je veux bien un poil d'expliquations ^^
ben ça redirige "", "/", "/index" et "/index/" sur /public/common/index.php

Et d'ailleurs c'est [L] le flag à la fin, pas [R] sinon ça redirect.



Sinon autre point que je viens de reconstater, et qui pourrait bien expliquer le problème.
Au passage je viens de réécrire le htaccess dans un nouveau fichier et j'ai maintenant une erreur 500 ^^Il doit donc déjà bien lire le fichier.

Avant d'aller voir dans les logs, quand j'édite mon htaccess ou que j'en créé un je fais ca avec textEdit (ou taco html edit), mais aucun ne me laisse enregistrer directement en .htaccess, ils me rajoutent systématiquement .rtf pour textedit, .php pour taco, et donc je dois faire ca a la barbare et donc renommer le fichier par la suite… pas très propre tout ça…

edit :
voilà l'erreur du log (pour l'erreur 500) :
Bloc de code:
[Sun Jun 01 18:34:04 2008] [alert] [client 127.0.0.1] /Users/monnom/www/xxxxx-xxxxxxxx/.htaccess: Invalid command '{\\rtf1\\mac\\ansicpg10000\\cocoartf102', perhaps mis-spelled or defined by a module not included in the server configuration
Là il me parle dans un sou dialecte de la chine profonde…
Qui a dit macNewbee :D
Oui c'est à cause du RTF, y a du formattage dedans.

Utilise Smultron qui est très, et libre et gratuit.

Dans TextEdit faut faire maj+pomme+t quand tu veux éditer du texte simple sans formattage (comme pour du code). Mais vaut mieux utiliser Smultron ;)
 
Rraaaaaahhhhhhhh lovely :love:

Smultron très bien ^^(effectivement j'ai édité le htaccess fait sous texedit je comprends mieux pourquoi apache aimait pas trop)

Par contre il ne me redirige que si je tape http://localhost/mondossier/
si je tape http://localhost/mondossier/index (ou blabla), alors ca me donne une erreur 404.

Je regarde ca doit être quelque part dans la règle que tu m'as donné, d'ailleurs merci pour l'explication je comprends mieux ;)

Edit : a y est trouvé
Ca venait de la répétition du / entre le RewriteBase et la RewriteRule :)

Et pour le fait que ca redirige pas blabla en fait c'est normal puisque dans la règle il lui est juste spécifié de rediriger sur "", "/" ou "index" (enfin exactement ce que tu m'avais mis en explications ^^), faut que je soigne vite mon mal de crane, je vois même plus des erreurs pourtant très grossières&#8230;

Un grand merci @ toi p4bl0!!!!!!

Juste un dernier point : y'a pas de solution pour faire en sorte que les .htaccess ne soit pas des fichiers cachés?

J'espère sinon avoir l'occasion de rendre la pareil, que ce soit pour toi p4bl0 ou pour quelqu'un d'autre ;)
 
Dernière édition:
Ok merci, je ne suis pas très familier de la ligne de commande, donc je vais éviter ca ce soir j'ai déjà la tête qui va éclater ^^mais j'étudierai la question.

Et oui c'est bien le sujet de ma question, parce qu'OnyX affiche Tous les fichiers cachés et c'est la bazare, moi je ne veux que les htaccess :) (po chiant le gars ^^)

@++ et encore merci ;)
 
Haha!!

Je viens de voir qu'avec Smultron on peut ouvrir directement les fichiers cachés!

Fichier/Ouvrir caché

Et ça affiche tous les fichiers cachés bien qu'ils soient… cachés! ^^

:love: