Apache .htaccess <ifModule здесь не разрешен

13

Запуск Apache на Ubuntu Precise с PHP 5.5

Попытка доступа к моей var/www/дает мне 500.

/var/log/apache2/error.log

шоу:

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

мой .htacess это:

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>

В мой apache.conf я добавил:

<Directory />
AllowOverride ALL
</Directory>

И это сработало после того, как я перезапустил apache.

Kiksy
источник

Ответы:

25

Вам необходимо настроить Apache для включения конфигурации из файла .htaccess. Так что в разделе каталога убедитесь, что у вас есть опция

Allowoverride ALL 

для получения дополнительной информации больше информации о allowoverride .

В вашей настройке, если вы используете только mod_rewrite, возможно, вы можете установить только FileInfo, я всегда устанавливаю для параметра Options значение SymLinksIfOwnerMatch, чтобы иметь возможность выполнять перенаправление на другие сайты.

Allowoverride FileInfo 
Options SymLinksIfOwnerMatch

Я надеюсь, что это поможет, если вы уже установили эту конфигурацию, пожалуйста, добавьте информацию с вашей конфигурацией виртуального хоста.

Xerus
источник
Это свежая установка Apache. У меня нет раздела <Directory /> в apache2.conf. Я добавил свое обновление выше. Спасибо
Кикси
Я забыл перезапустить Apache. Это работает сейчас.
Кикси
1
На моем конце у меня была пропущенная Directoryдиректива. После добавления все заработало. Я полагаю, что это новая версия Apache 2.4, потому что раньше она работала с 2.2 ...
Алексис Уилке
1
Да, значение по умолчанию для Allowedoverride изменилось в Apache 2.3.9.
mlissner