Apache .htaccess <ifModule non autorisé ici

13

Exécution d'Apache sur Ubuntu Precise, avec PHP 5.5

Essayer d'accéder à mon var/www/me donne un 500.

/var/log/apache2/error.log

spectacles:

/var/www/web/.htaccess: <IfModule not allowed here

mon .htacess est:

DirectoryIndex app.php


<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    RewriteRule .? %{ENV:BASE}/app.php [L]
</IfModule>

<IfModule !mod_rewrite.c>
    <IfModule mod_alias.c>       
        RedirectMatch 302 ^/$ /app.php/       
    </IfModule>
</IfModule>

Dans mon apache.conf, j'ai ajouté:

<Directory />
AllowOverride ALL
</Directory>

Et cela a fonctionné après avoir redémarré Apache.

Kiksy
la source

Réponses:

25

Vous devez configurer votre apache pour activer la configuration à partir du fichier .htaccess. Donc, dans la section répertoire, assurez-vous que vous avez la possibilité

Allowoverride ALL 

pour plus d'informations plus d'informations sur allowoverride .

Dans votre configuration, si vous utilisez uniquement mod_rewrite, vous pouvez peut-être définir uniquement FileInfo, je règle toujours le paramètre Options sur SymLinksIfOwnerMatch pour pouvoir effectuer une redirection vers d'autres sites.

Allowoverride FileInfo 
Options SymLinksIfOwnerMatch

J'espère que cela vous aidera, si vous avez déjà défini cette configuration, veuillez ajouter des informations avec votre configuration de virtualhost.

Xerus
la source
Il s'agit d'une nouvelle installation d'Apache. Je n'ai pas de section <Directory /> dans apache2.conf. J'ai ajouté ma mise à jour ci-dessus. Merci
Kiksy
J'ai oublié de redémarrer Apache. Cela fonctionne maintenant.
Kiksy
1
De mon côté, j'avais une Directorydirective manquante . Une fois ajouté, cela a fonctionné correctement. Je suppose que c'est nouveau dans la version 2.4 d'Apache car il fonctionnait avec 2.2 ...
Alexis Wilke
1
Oui, la valeur par défaut de Allowedoverride a changé dans Apache 2.3.9.
mlissner