Je ne peux pas faire fonctionner mod_rewrite sur Lion. Je développe un certain nombre de sites Web localement, dans ~ / Sites, en utilisant des fichiers .htaccess. Je suis sur 10.7.3 et je n'ai touché à aucun fichier de configuration à l'exception de l'activation de PHP dans httpd.conf (qui fonctionne).
Je sais qu'il y a au moins 2 questions à ce sujet ici, mais les solutions détaillées là-bas ne fonctionnent pas. Pas plus que les autres solutions que j'ai trouvées sur le web. Je dois faire quelque chose de stupide ou d'oublier quelque chose, sinon je deviens probablement fou, mais ça ne marche pas.
J'ai essayé tous les trucs habituels:
Dans
/private/etc/apache2/users/<myusername>.conf
, le changementAllowOverride None
àAllowOverride All
et redémarrez le serveur WebDe plus, dans
/private/etc/apache2/httpd.conf
, changez n'importe quelle / toutes les occurrences deAllowOverride None
enAllowOverride All
- je l'ai essayé dans tous les différents endroits où ces directives se trouventEssayez essentiellement toutes les combinaisons possibles de valeurs pour la
Options
ligne au-dessus / en dessous de laAllowOverride
ligne, y compris les valeurs:Indexes MultiViews FollowSymLinks All
Bien sûr, redémarrez toujours le serveur Web après un tel changement. Rien de tout cela fonctionne. Toutes mes URL propres ne fonctionnent tout simplement pas; Je reçois un 404 - introuvable. Le journal des erreurs d'Apache me donne juste des erreurs "Le fichier n'existe pas:". Il semble donc que le module mod_rewrite ne fonctionne même pas du tout.
Je me suis assuré que mod_rewrite est chargé dans le httpd.conf, ce qu'il est; il en est ainsi par défaut sur une installation Lion.
Ce qui est fou, c'est que tout fonctionnait parfaitement - jusqu'à ce que je migre vers une nouvelle machine exécutant Lion. Autrement dit, j'écarte une erreur dans mes fichiers .htaccess parce que je sais que cela a fonctionné auparavant. De plus, s'il s'agissait d'une erreur dans le .htaccess, j'obtiendrais une sorte de message d'erreur du module mod_rewrite dans le fichier error_log d'Apache, me disant au moins que le module lui-même est appelé. Mais cela ne se produit pas.
Suis-je en train d'oublier quelque chose? Dois-je modifier les paramètres de configuration ailleurs? Dois-je changer la configuration de PHP? Pourquoi les instructions (comme Comment activer mod_rewrite sur MacOSX Lion et faire fonctionner mod_rewrite sur Mac OS X ) fonctionnent-elles pour d'autres personnes mais pas pour moi? :)
J'ai déjà perdu des heures à ce sujet. Toute aide serait très appréciée.
la source
Réponses:
Vous devez vous assurer que dans votre /etc/apache2/users/username.conf vous avez les éléments suivants:
Les FollowSymlinks et AllowOverride sont essentiels ici. Pendant que vous faites allusion aux deux dans votre question, vous ne les avez peut-être pas configurés correctement en tandem.
Assurez-vous que dans httpd.conf /private/etc/apache2/extra/httpd-userdir.conf est également inclus. C'est par défaut.
Après toute modification, redémarrez le serveur Web pour que les modifications prennent effet.
Si vous rencontrez toujours des problèmes, il y a peut-être un problème avec vos règles de réécriture réelles. Les utilisiez-vous également dans un contexte .htaccess auparavant? Notez que dans un .htaccess, l'expression régulière de la règle de réécriture est comparée à un URI de demande sans la barre oblique de tête et toujours relative au répertoire où réside le .htaccess , tandis que dans un httpd.conf global, l'URI doit correspondre à une barre oblique de tête et est par rapport à la racine Web. Étant donné que vous supposez que votre .htaccess se trouve dans un sous-répertoire de ~ / Sites, vos règles de réécriture peuvent se comporter différemment du moment où le .htaccess réside dans la racine Web d'un hôte (virtuel).
Pour déboguer mod_rewrite, vous pouvez activer la journalisation de la réécriture. Vous devez l'activer dans /etc/apache2/httpd.conf:
la source
L'ajout d' options + FollowSymLinks a bien fonctionné pour moi
la source
Options +FollowSymLinks
? J'ajoute juste cette ligne, cela fonctionne pour moiJe rencontrais un problème similaire où mon fichier .htaccess était complètement ignoré dans un sous-dossier de mon répertoire ~ / Sites sous un VirtualHost qui était correctement configuré.
Après avoir passé la dernière heure à jouer avec différents fichiers de configuration et à définir AllowOverride All à divers endroits, j'ai finalement découvert que le fichier .htaccess, alors qu'il ressemblait à un fichier .htaccess dans le Finder, était en fait un fichier .htaccess.txt avec le extension cachée.
Pour vérifier et modifier votre fichier .htaccess, faites un clic droit dessus et choisissez Obtenir des informations, puis assurez-vous de supprimer toute extension principale de la fin, comme celle que j'avais:
Et maintenant ça marche!
la source
Ci-dessous les entrées .htaccess corrigent pour moi
la source
Placer .htaccess dans / Library / WebServer / Documents et ouvrir "localhost /"; pour le tester, fonctionne comme prévu. Cela ne fonctionne tout simplement pas dans "~ / Sites". Merci Niels Heidenreich pour cela!
la source
Lorsque vous tapez: / Users / username / app_name
Le / fait référence à la racine du serveur Web:
"localhost /"
Si vous utilisez / ~ username / app_name dans votre réécriture, cela devrait fonctionner.
la source
/
sont toujours des chemins absolus pour Apache, voir la définition de la racine du serveur Web dans http.conf (<Directory "/Library/WebServer/Documents">
)