Apache .htaccess <ifModule tutaj niedozwolony

13

Uruchamianie Apache na Ubuntu Precise z PHP 5.5

Próba uzyskania dostępu do mojej var/www/daje 500.

/var/log/apache2/error.log

przedstawia:

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

moja .htacess to:

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>

Do mojego apache.conf dodałem:

<Directory />
AllowOverride ALL
</Directory>

I zadziałało po ponownym uruchomieniu apache.

Kiksy
źródło

Odpowiedzi:

25

Musisz skonfigurować apache, aby umożliwić konfigurację z pliku .htaccess. Więc w sekcji katalogu upewnij się, że masz opcję

Allowoverride ALL 

aby uzyskać więcej informacji, więcej informacji na temat allowoverride .

W twoim ustawieniu, jeśli używasz tylko mod_rewrite, być może możesz ustawić tylko FileInfo, zawsze ustawiam parametr Options na SymLinksIfOwnerMatch, aby móc wykonać przekierowanie na inne strony.

Allowoverride FileInfo 
Options SymLinksIfOwnerMatch

Mam nadzieję, że to pomoże, jeśli już ustawiłeś tę konfigurację, dodaj informacje do konfiguracji wirtualnego hosta.

Xerus
źródło
To jest nowa instalacja Apache. Nie mam sekcji <Directory /> w apache2.conf. Dodałem swoją aktualizację powyżej. Dzięki
Kiksy,
Zapomniałem zrestartować Apache. To działa teraz.
Kiksy,
1
Po mojej stronie brakowało mi Directorydyrektywy. Po dodaniu działał poprawnie. Przypuszczam, że jest to nowość w wersji Apache 2.4, ponieważ działała z wersją 2.2 ...
Alexis Wilke
1
Tak, domyślna wartość Dozwolona zmiana została zmieniona w Apache 2.3.9.
mlissner