Назад | Перейти на главную страницу

Ошибка .htaccess «здесь запрещена» для всех для всех инструкций

Я использую Debian Lenny и Apache 2. Я изменил значение по умолчанию .htaccess файл с:

AllowOverride AuthConfig

Но я всегда получаю сообщение об ошибке not allowed here при размещении любых инструкций в .htaccess файл.

РЕДАКТИРОВАТЬ:

файл по умолчанию:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/

        <Directory />
                Options FollowSymLinks
                Order allow,deny
                Allow from all
                AllowOverride All
        </Directory>

        <Directory /var/www/>
                Options Indexes FollowSymLinks Includes
                #AllowOverride All
                #AllowOverride Indexes AuthConfig Limit FileInfo
                AllowOverride AuthConfig
                Order allow,deny
                Allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

        Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
                Options Indexes MultiViews FollowSymLinks 
                AllowOverride None
                Order deny,allow
                Deny from all
                Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>

</VirtualHost>

.htaccess:

#Options +FollowSymlinks

# Prevent Directoy listing
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini)">
 Order deny,allow
 Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ index.php?_route_=$1 [L,QSA]

Информация о PHP:

apache2handler

Apache Version = Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny10 with Suhosin-Patch 
Apache API Version = 20051115 
Server Administrator = webmaster@localhost 
Hostname:Port = hw-linux.homework:80 
User/Group = www-data(33)/33 
Max Requests = Per Child: 0 - Keep Alive: on - Max Per Connection: 100 
Timeouts = Connection: 300 - Keep-Alive: 15 
Virtual Server = Yes 
Server Root  = /etc/apache2 
Loaded Modules =

core mod_log_config mod_logio prefork http_core mod_so mod_alias mod_auth_basic
mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user
mod_autoindex mod_cgi mod_deflate mod_dir mod_env mod_mime mod_negotiation 
mod_php5 mod_rewrite mod_setenvif mod_status 

Вам потребуется минимум Параметры AllowOverride Authconfig FileInfo внутри твоего <Directory> блок, чтобы получить .htaccess вы разместили здесь, чтобы работать - mod_rewrite потребуется FileInfo Options и ваш <FilesMatch> блок требует Authconfig.

Также: ваше утверждение «не работает с AllowOverride All» ошибочно. Вы не можете указать более разрешительную среду, чем AllowOverride All. В случае сомнений начните с этого, чтобы убедиться, что остальная часть вашей конфигурации работает, затем сузить его более конкретно (в целях безопасности).

Эта опция может использоваться только внутри Directory элемент. Таким образом, вы должны указать каталог, который следует защитить.

здесь запрещено обычно вызывается попыткой установить директивы в .htaccess файл, который можно определить только в httpd.conf.

Первая попытка

AllowOverride All

В твоей самой <Directory> в свою папку www. Теперь твой .htaccess может работать в полную силу. Если это решит проблему, вы можете сосредоточиться на безопасности и уменьшать количество разрешенных директив одну за другой.