apache — Как разрешить файл .htaccess?
Если добавляю файл .htaccess, то сайт падает, в браузере выводится:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
- apache
- .htaccess
- php
- localhost
5
В конфигах домена от апач должны быть разрешены реврайты:
AllowOverride ALL
Приведите сюда этот файл конфига. У меня такая же проблема была на VDS, решилась именно этой строкой.
2
скорее всего mod_rewrite в конфигах закомментарен
3
Если файл . htaccess пустой — то удалить его нафиг, если он реально для чего-то нужен то в него эти нужные строчки прописать, иначе ошибка останется.
Ну или пропиши в него
RewriteEngine on RewriteBase /
А вообще можно скинуть файл логов апача, и там намного понятнее будет из-за чего ошибка вылетает. Без логов ничего не понятно. Вполне возможно что .htaccess нифига не пустой, что в нём присутствует какая-то строка, или сохранен в UTF-8 bom. что вероятнее всего выдаст ошибку. Вариантов могу написать вагон и тележку, а смысл? Код файла сюда, лог апача так же сюда 🙂
Но все таки возможно в конфиге апача выключено.
1
Нужно убрать символ #
в начале строки 156 в apache\conf\httpd.conf
. И написать AllowOverride All
на строчках 229, 265, 378 (номера строк могут отличаться).
1
Когда в программном продукте существует возможность просмотра лога ошибок, то при возникновении ошибки следует:
- Перевести текст ошибки в логе и выполнить, что просят, если это не вызывает затруднений;
- И/или сразу вбить в поисковик кусок текста ошибки в логе и посмотреть, как другие разрешили проблему;
- Если варианты 1 и 2 не помогли, задавая вопрос, привести в нём текст ошибки в логе.
Конкрентно для Apache — точнее, у меня стоит WampServer, в состав которого входит Apache — мне всегда, несколько раз помогал способ 1. Описание ошибок в журнале достаточно подробное и понятное.
Без содержимого лога нельзя точно сказать, в чём состоит проблема,
может выдаваться по нескольким причинам. Судя по результатам, которые получил я, когда гуглил в поисках разрешения аналогичной проблемы, большей части пользователей помогает замена в файле httpd.conf
строки #LoadModule rewrite_module modules/mod_rewrite.so
на LoadModule rewrite_module modules/mod_rewrite.so
.
Лично же мне помогло удаление всех комментариев в .htaccess
, решил проблему, разобравшись с логом.
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
ПочтаНеобходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
.
(.*)$ index.php?my=$1 [L,QSA] </IfModule mod_rewrite.c>Все просто, нужные ЧПУ преобразуются в переменной
$_GET['my'] mysite.ru/about/contact -> $_GET['my'] = /about/contact
Локально настройки OpenServer
Apache-PHP-7-x64 ( PHP-7.0-x64 + MySQL-5.7-x64 )
На сервере те же настройки Апача/PHP. Если зайти на сайт, все норм, но если начать переходить в разделы
Not Found The requested URL /about/contact was not found on this server. Apache/2.4.18 (Ubuntu) Server at mysite.ru Port 80
Господа, подскажите как решить? Честно скажу, только изучаю ЧПУ, и не могу понять в чем ошибка
- .htaccess
- apache
8
- .htaccess
При работе с файлом .htacсess
необходимо убедиться, что Apache
обрабатывает этот файл. Для этого в конфигурации виртуального хоста (либо конфигурации самого сервера, если виртуальные хосты отсутствуют) должна быть определена директива AllowOverride
. Эта директива должна располагаться только в конфиге и только в контексте <Directory>
:
<VirtualHost *:80> ServerName my-server DocumentRoot /var/www/my-server ... <Directory /> AllowOverride All </Directory> ... </VirtualHost>
После изменения конфига не забываем о рестарте Apache.
- RewriteEngine
Для работы с механизмом rewrite
к Apache обязательно должен быть подключен модуль mod_rewrite
.
Например, так (RedHat, CentOS, Oracle Linux и т.д.):
LoadModule rewrite_module modules/mod_rewrite.so
или так (Debian, Ubuntu и т.д.):
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
Дебиановское наследие также предлагает утилиты по включению/отключению модулей Apache (a2enmod, a2dismod — enable or disable an apache2 module):
root@ubuntu:/# a2enmod rewrite
После изменения конфига не забываем о рестарте Apache.
Зарегистрируйтесь или войдите
Регистрация через Google
Регистрация через Facebook
Регистрация через почту
Отправить без регистрации
Почта
Необходима, но никому не показывается
Отправить без регистрации
Почта
Необходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о кукиПолное руководство по включению «.
htaccess» в ApacheФайл .htaccess — это мощный инструмент настройки, который позволяет вам контролировать и настраивать различные аспекты поведения вашего веб-сайта на веб-сервере Apache. В этом руководстве рассказывается, как включить .htaccess в Apache, обсуждаются лучшие практики и приводятся примеры распространенных вариантов использования, которые помогут вам максимально эффективно использовать эту функцию.
Реклама
1. Понимание .htaccess и его преимуществ
Файл .htaccess (гипертекстовый доступ) представляет собой скрытый файл конфигурации, используемый веб-серверами Apache. Это позволяет вам управлять настройками отдельных каталогов на вашем веб-сайте без необходимости изменять глобальную конфигурацию Apache. Преимущества использования .htaccess включают в себя:
- Повышенная гибкость: Применение пользовательских конфигураций к определенным каталогам или подкаталогам.
- Централизованное управление: Управление несколькими настройками в одном файле.
- Динамические изменения: Изменения в файле .htaccess вступают в силу немедленно, без перезапуска Apache.
2. Включение .htaccess в Apache
Чтобы включить .htaccess в Apache, выполните следующие действия:
- Редактирование основного файла конфигурации Apache:
Найдите основной файл конфигурации Apache, обычно называемый httpd.conf или apache2.conf, и откройте его в текстовом редакторе. - Разрешение переопределения .htaccess:
Найдите директивуПример:
<Каталог "/var/www/html"> Разрешить переопределить все Каталог>
AllowOverride All
Сохранить и закрыть файл конфигурации.
- Перезапуск Apache:
Перезапустите веб-сервер Apache, чтобы изменения вступили в силу. В зависимости от вашей операционной системы используйте одну из следующих команд:- Ubuntu/Debian: `sudo systemctl перезапустить apache2`
- CentOS/Fedora: `sudo systemctl restart httpd`
3. Рекомендации по использованию .htaccess
- Организуйте файлы .htaccess: Ограничьте количество файлов .htaccess и используйте их только при необходимо.
- Обеспечьте соответствующие разрешения: Установите соответствующие права доступа к файлам (например, 644) для предотвращения несанкционированного доступа.
- Проверка изменений в среде разработки:
- Сохраняйте резервные копии: Сохраняйте резервные копии ваших файлов . htaccess, чтобы при необходимости быстро отменить изменения.
4. Распространенные варианты использования и примеры
4.1. Пользовательские страницы ошибок
Создание пользовательских страниц ошибок для различных кодов ошибок HTTP:
Документ об ошибке 404 /custom_404.html ErrorDocument 500 /custom_500.html
ErrorDocument 404 /custom_404.html ErrorDocument 500 /custom_500.html |
4.2. Защита паролем
Защита каталога паролем:
Основной тип авторизации AuthName «Запретная зона» AuthUserFile /путь/к/.htpasswd Требовать действительного пользователя
AuthType Basic AuthName «Restricted Area» AuthUserFile /path/to/.htpasswd Требовать действительного пользователя 9006 0 |
4.3. Перезапись и перенаправление URL
Перенаправить все HTTP-запросы на HTTPS:
9(. *)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]4.4. Блокировка IP-адресов
Блокировка определенных IP-адресов от доступа к вашему веб-сайту:
порядок разрешить, запретить запретить с 192.168.1.1 запретить с 192.168.1.2 разрешить от всех
заказать разрешить,запретить запретить от 192.168.1.1 запретить от 192.168.1.2 разрешить от всех 9006 0 |
4.5. Реализация правил кэширования
Установить правила кэширования для определенных типов файлов:
ExpiresActive On ExpiresDefault «доступ плюс 1 месяц» 90 003
|
5. Устранение неполадок .htaccess
- Проверить синтаксические ошибки: Убедитесь, что ваш файл . htaccess не содержит синтаксических ошибок. Вы можете использовать онлайн-валидаторы .htaccess для выявления проблем.
- Проверьте права доступа к файлу: Убедитесь, что ваш файл .htaccess имеет правильные права доступа, например 644, чтобы обеспечить его чтение веб-сервером.
- Просмотрите журналы ошибок Apache: Просмотрите журналы ошибок Apache на наличие сообщений, связанных с проблемами .htaccess. Эти журналы могут предоставить ценную информацию для диагностики проблем.
- Тест с минимальным файлом .htaccess: Если вы не уверены, включен ли .htaccess, создайте минимальный файл .htaccess с одной директивой (например, `Redirect /test.html /test2.html`) и посмотрите, это вступает в силу.
Заключение
В этом подробном руководстве мы рассмотрели, как включить .htaccess в Apache, обсудили лучшие практики использования .htaccess и привели примеры распространенных вариантов использования. Поняв, как включить и настроить файлы .htaccess, вы сможете воспользоваться их мощными функциями для улучшения и настройки поведения вашего веб-сайта на веб-сервере Apache.
Как включить .htaccess на HTTP-сервере Apache
Последнее обновление: 5 октября 2020 г., Дэн Нанни
Вопрос: веб-сайт Apache сервер. Но файл .htaccess
, который я поместил в корневой каталог документов веб-сайта, не работает. Как включить .htaccess
на веб-сервере Apache?
Файл .htaccess
представляет собой файл конфигурации на уровне каталога для HTTP-сервера Apache, который позволяет переопределять общесистемные настройки веб-сервера без изменения глобального файла конфигурации (например, httpd.conf
или apache2.conf
). В файле .htaccess
можно настроить такие вещи, как управление доступом к каталогу, защита паролем, перенаправление URL-адресов или предотвращение горячих ссылок.
Файл .htaccess
можно поместить в корневую папку документов веб-сайта и/или в любую из ее подпапок. Особенно в среде общего веб-хостинга, где несколько веб-сайтов предоставляются на одном веб-сервере, файл .htaccess
— это удобный способ для каждого веб-сайта переопределить глобальные настройки веб-сервера без привилегий root.
Если вы хотите использовать файл .htaccess
на HTTP-сервере Apache, вам необходимо явно включить его в основном файле конфигурации веб-сервера. В противном случае ваш файл .htaccess
будет проигнорирован.
Вот , как включить .htaccess
для HTTP-сервера Apache.
Включить
.htaccess
в CentOS или FedoraОткройте файл глобальной конфигурации Apache с помощью текстового редактора.
$ sudo vi /etc/httpd/conf/httpd.conf
Найдите
директив. Каждый раздел, заключенный в
и
, определяет настройки веб-сервера для конкретного корневого каталога документа и всех его подкаталогов. В разделе замените AllowOverride None
на AllowOverride All
. Это активирует .htaccess
для соответствующего дерева каталогов.
После изменения конфигурации перезапустите Apache.
В CentOS 7 или новее:
$ sudo systemctl перезапустить httpd
В CentOS 6 или более ранней версии:
$ перезапуск службы sudo httpd
Включить
.htaccess
в Debian или Ubuntu Откройте глобальную конфигурацию Apache ( /etc/apache2/apache2.conf
) или конфигурацию для конкретного сайта ( /etc/apache2/sites-available/mywebsite.conf
) с помощью текстового редактора.
Найдите
директив. На участке в окружении
и
, замените « AllowOverride None » на « AllowOverride All «. Это активирует .htaccess
для всего дерева каталогов в каталог-путь
.