web-dev-qa-db-fra.com

Apache .htaccess <ifModule non autorisé ici

Exécuter Apache sur Ubuntu Precise, avec PHP 5.5

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

/var/log/Apache2/error.log

montre:

/ 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.

13
Kiksy

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 d'hôte virtuel.

25
Xerus