it-swarm-eu.dev

.htaccess est ignoré même si VirtualHost a "AllowOverride All"

J'exécute un serveur LAMP sur Fedora 13 qui fonctionne bien; cependant, je viens d'ajouter un fichier ".htaccess" au dossier docroot de mon site actuel qui est complètement ignoré.

J'ai essayé une demi-douzaine de tests différents, dont celui-ci:

RewriteEngine on
RewriteBase /

RewriteRule ^.*$ index.php

Mais les images et toutes les autres pages se chargent bien et les fichiers inexistants sont toujours 404. J'ai également essayé ceci:

order deny,allow
deny from all

Mais chaque page se charge toujours très bien. Encore une fois, le fichier .htaccess est tout simplement ignoré à 100%.

Nous mettons nos enregistrements virtualhost dans /etc/httpd/conf.d/virtual.conf. Cela ressemble à ceci:

NameVirtualHost *

<VirtualHost *>
    ServerName              intranet
    DocumentRoot            /var/www/default
    <Directory "/var/www/default">
        Options FollowSymLinks
        AllowOverride All

        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *>
    ServerName              ourwebsite.com
    DocumentRoot            /var/www/html/ourwebsite.com/docroot
    <Directory "/var/www/html/ourwebsite.com/docroot">
        Options FollowSymLinks
        AllowOverride All

        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Qu'est-ce qui pourrait faire que notre serveur IGNORE complètement le .htaccess fichier??

Modifier:

J'ai modifié le fichier .htaccess ci-dessus pour mieux démontrer que mes modifications sont ignorées. Notez que j'ai essayé exactement le même fichier .htaccess sur le serveur de production et cela a bien fonctionné.

Modifier 2:

OK, j'ai de nouvelles informations! Juste à des fins de test, j'ai parcouru et changé temporairement CHAQUE directive "AllowOverride" en AllowOverride All. J'ai compris que la toute première entrée dans l'annuaire semblait l'emporter sur toutes les autres:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

Quand j'ai changé ça en AllowOverride All, mes fichiers .htaccess prennent effet. C'est comme tous les autres AllowOverride All les directives de mes fichiers de configuration sont ignorées!

Ce qui donne??

25
Brian Lacy

Incroyable. Rappelez-vous comment j'ai dit qu'il s'agissait d'un serveur de développement? Ouais .. eh bien voici à quoi ressemble vraiment mon entrée d'hôte virtuel:

<VirtualHost *>
    ServerName              dev.ourwebsite.com
    DocumentRoot            /var/www/html/dev.ourwebsite.com/docroot
    <Directory "/var/www/html/ourwebsite.com/docroot">
        Options FollowSymLinks
        AllowOverride All

        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Est-ce que tu le vois? Et bien non. J'ai oublié de changer mon entrée "Annuaire" en dev.ourwebsite.com au lieu de ourwebsite.com - et cela a fait toute la différence. J'ai juste supposé qu'Apache aurait jeté une erreur si le répertoire n'existait pas; mais cela ne s'applique qu'à la directive DocumentRoot. est basé sur les correspondances - ce qui signifie qu'il applique les règles s'il correspond à la demande entrante, mais sinon, peu importe si vous le dites à AllowOverride sur les licornes magiques.

Que ce soit une leçon pour tous ceux qui viennent chercher - quand tout le reste échoue, pensez à la typo toute-puissante.

32
Brian Lacy

Vérifiez si tout autre "AllowOverride None" présenté dans 'httpd.conf' au-dessus de la déclaration virtualhosts. Vous avez probablement "AllowOverride None" dans docroot.

5
Denis

J'ai eu cela sur un nouveau serveur, j'ai finalement réalisé que la réécriture de mod n'était pas activée par défaut.

ln -s /etc/Apache2/mods-available/rewrite.load /etc/Apache2/mods-enabled/rewrite.load
0
jmullee

Trois suppositions:

Y a-t-il réellement un espace après la virgule dans la ligne order deny, allow dans .htaccess? Apache n'aime pas ça. Pour moi sur F13, je gagnais 500s.

Avez-vous une directive AccessFileName quelque part?

Si vous utilisez selinux, avez-vous le bon contexte pour le fichier (ls -lZ)?

0
Mark Wagner