Apache .htaccess <ifModule hier nicht erlaubt

13

Ausführen von Apache unter Ubuntu Precise mit PHP 5.5

Der Versuch, auf meine zuzugreifen, var/www/gibt mir eine 500.

/var/log/apache2/error.log

zeigt an:

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

Meine .htacess ist:

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>

In meine apache.conf habe ich hinzugefügt:

<Directory />
AllowOverride ALL
</Directory>

Und es hat funktioniert, nachdem ich Apache neu gestartet habe.

Kiksy
quelle

Antworten:

25

Sie müssen Ihren Apache konfigurieren, um die Konfiguration über die .htaccess-Datei zu ermöglichen. Stellen Sie also sicher, dass Sie im Verzeichnisbereich die Option haben

Allowoverride ALL 

Weitere Informationen Weitere Informationen zu allowoverride .

Wenn Sie in Ihrem Setup nur mod_rewrite verwenden, können Sie möglicherweise nur FileInfo festlegen. Ich setze den Options- Parameter immer auf SymLinksIfOwnerMatch, um eine Umleitung zu anderen Sites durchführen zu können.

Allowoverride FileInfo 
Options SymLinksIfOwnerMatch

Ich hoffe, es wird helfen, wenn Sie diese Konfiguration bereits vorgenommen haben, fügen Sie bitte Informationen zu Ihrer virtualhost-Konfiguration hinzu.

Xerus
quelle
Dies ist eine Neuinstallation von Apache. Ich habe keinen Abschnitt <Directory /> in apache2.conf. Ich habe mein Update oben hinzugefügt. Vielen Dank
Kiksy
Ich habe vergessen, Apache neu zu starten. Das funktioniert jetzt.
Kiksy
1
Am Ende hatte ich eine fehlende DirectoryAnweisung. Einmal hinzugefügt, funktionierte es richtig. Ich nehme an, dass dies in Version 2.4 von Apache neu ist, da es früher mit 2.2 funktioniert hat ...
Alexis Wilke
1
Ja, der Standardwert für Allowedoverride wurde in Apache 2.3.9 geändert.
mlissner