.htaccess файл не читается ( "Параметры -Indexes" в файле .htaccess не работают)
Я создал файл .htaccess только с следующей строкой:
Параметры -Indexes
Однако индекс показывается для каталога.
Я только что установил Apache2 и использую все значения по умолчанию (я не изменял apache2.conf или httpd.conf).
ОС: Ubuntu 12.04 (Precise Pangolin)
Версия Apache2: Server version: Apache/2.2.22 (Ubuntu) Server built: Feb 13 2012 01:51:56
$ls -l.htaccess
-rwxr-xr-x.htaccess
EDIT:
Я взял совет lanzz и добавил тарабарщину в файл .htaccess
и обнаружил, что файл .htaccess
не читается.
Ответы
Ответ 1
Чтобы получить эту работу, я добавил следующее в /etc/apache2/httpd.conf
(который является файлом нулевой длины по умолчанию при установке Apache), а затем перезапустил Apache. Теперь Options -Indexes
в файле .htaccess
работает по желанию. Вот минимальный минимум, необходимый для его работы:
/etc/apache2/httpd.conf :
<VirtualHost *:80>
DocumentRoot /var/www
<Directory / >
</Directory>
</VirtualHost>
lanzz предложение добавить строку тарабарщины в файл .htaccess
, чтобы узнать, было ли оно прочитано, было полезно при диагностике проблемы.
Обратите внимание, что AllowOveride
по умолчанию соответствует All
, за комментарий Эвана Мулавского, поэтому он не требуется в минимальном наборе строк httpd.conf
выше.
Ответ 2
Вы должны проверить, что конфигурация Apache позволяет выполнить .htaccess. В вашей конфигурации virtualhost должна быть строка:
AllowOverride All
Если этого не происходит, то почему .htaccess не вступает в силу.
Ответ 3
У меня была та же проблема. Я использовал виртуальный хост, поэтому я изменил httpd-vhosts.conf, поэтому, если вы используете его, это может помочь
Если вы настроите ссылку на хост, тег каталога будет таким же, как ваш корень документа
<VirtualHost *:8080>
ServerName somelocalserver
DocumentRoot "C:/Websites/htdocs/yoursite"
<Directory "C:/Websites/htdocs/yoursite">
Options FollowSymLinks
AllowOverride All
</Directory>
Мне понадобилось AllowOverride All
для распознавания файла .htaccess.
Изменить
Мне также нужно было добавить путь к корню сайта в самом теге каталога. т.е. <Directory "C:/Websites/htdocs/yoursite">
. Это было значение по умолчанию в образцах, которые я использовал.
Ответ 4
Как нет файла httpd.conf
больше, что вам нужно сделать на VPS:
- Перейдите к
/etc/apache2/sites-enabled/
- Сделайте
ls
, чтобы найти файл для веб-сайта, который вы ищете.
- Отредактируйте соответствующий файл с помощью
nano THE_CONF_FILE
или любым другим редактором, который вы хотите
- Измените все значения
AllowOverride None
, которые вы видите в разных <Directory> ... </Directory>
до AllowOverride All
-
Сохраните файл и закройте его
-
Теперь вам нужно включить перезапись модуля, выполнив команду: sudo a2enmod rewrite
- И, наконец, чтобы активировать новую конфигурацию, вам нужно запустить:
service apache2 restart
Теперь это будет как шарм!
Ответ 5
Если у вас есть
AllowOverride None
Измените это на:
AllowOverride All
в вашем httpd.conf или в вашем файле виртуального хоста по умолчанию в
/И т.д./apache2/сайты-доступные/... конф
Ответ 6
Я решил эту проблему на RHEL, отредактировав файл /etc/http/conf/httpd.conf
Я изменил все
AllowOverride None
Для
AllowOverride All
Также вы можете проверить httpd.conf AllowOverride, выполнив следующую команду в RHEL
grep -i AllowOverride /etc/conf/conf/httpd.conf
Ответ 7
Кроме того, помимо изменения AllowOverride All в файле конфигурации vhost вам также может потребоваться добавить следующее в начале файла .htaccess:
RewriteEngine On
RewriteBase /
В противном случае может пока не обнаруживаться переписывание или переадресация.