Apache .htaccess <ifModule tidak diizinkan di sini

13

Menjalankan Apache di Ubuntu Precise, dengan PHP 5.5

Mencoba mengakses saya var/www/memberi saya 500.

/var/log/apache2/error.log

menunjukkan:

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

.htacess saya adalah:

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>

Ke dalam apache.conf saya menambahkan:

<Directory />
AllowOverride ALL
</Directory>

Dan itu berhasil setelah saya me-restart apache.

Kiksy
sumber

Jawaban:

25

Anda perlu mengonfigurasi apache Anda untuk mengaktifkan konfigurasi dari file .htaccess. Jadi di bagian direktori pastikan Anda memiliki opsi

Allowoverride ALL 

untuk informasi lebih lanjut informasi lebih lanjut tentang allowoverride .

Dalam pengaturan Anda jika Anda hanya menggunakan mod_rewrite mungkin Anda hanya dapat mengatur FileInfo, saya selalu mengatur parameter Opsi ke SymLinksIfOwnerMatch untuk dapat melakukan pengalihan ke situs lain.

Allowoverride FileInfo 
Options SymLinksIfOwnerMatch

Saya harap ini akan membantu, jika Anda sudah mengatur konfigurasi ini, silakan tambahkan informasi dengan konfigurasi virtualhost Anda.

Xerus
sumber
Ini adalah instalasi baru dari Apache. Saya tidak memiliki bagian <Direktori /> di apache2.conf. Saya telah menambahkan pembaruan saya di atas. Terima kasih
Kiksy
Saya lupa me-restart Apache. Itu bekerja sekarang.
Kiksy
1
Pada akhirnya saya memiliki Directoryarahan yang hilang . Setelah ditambahkan, itu berfungsi dengan baik. Saya kira ini baru dalam versi 2.4 dari Apache karena dulu bekerja dengan 2.2 ...
Alexis Wilke
1
Ya, nilai default untuk Allowoverride berubah di Apache 2.3.9.
mlissner