Проблемы с.htaccess. Включаем модуль Mod rewrite в Apache Установка mod rewrite
Модуль Mod rewrite используется для преобразования URL на основе правил. В статье рассказывается, как включить поддержку модуля Mod rewrite в веб-сервере Apache в операционной системе Ubuntu.
Подключаем модуль Mod rewrite
Перейдите в каталог /etc/apache2/mods-available и убедитесь, что там есть файл rewrite.load отвечающий за загрузку модуля Mod rewrite. Для этого выполните в консоли следующие команды:
Cd /etc/apache2/mods-available ls
В списке файлов должен присутствовать файл с именем rewrite.load .
Теперь перейдем в каталог /etc/apache2/mods-enabled и создадим символьную ссылку на файл rewrite.load . Для этого выполните команды:
Cd /etc/apache2/mods-enabled sudo ln -s ../mods-available/rewrite.load rewrite.load
Изменяем настройки виртуального хоста
Далее нужно изменить настройки виртуального хоста, который должен использовать модуль Mod rewrite. Для этого нужно открыть файл настроек конкретного хоста. Для примера возьмем стандартный файл /etc/apache2/sites-available/default , который содержит настройки хоста с именем localhost. Выполните следующую команду, чтобы открыть файл в редакторе GEdit:
Sudo gedit /etc/apache2/sites-available/crocodilus
Найдите в файле секцию
Перезапускаем Apache
Теперь осталось перезапустить веб-сервер Apache командой.
mod_rewrite включить (7)
Нет, mod_rewrite - это модуль Apache и не имеет ничего общего с PHP.
Чтобы активировать модуль, следующая строка в httpd.conf должна быть активной:
LoadModule rewrite_module modules/mod_rewrite.so
чтобы убедиться, что он уже активен, попробуйте поместить файл.htaccess в веб-каталог, содержащий строку
RewriteEngine on
если это работает, не выкидывая ошибку внутреннего внутреннего сервера 500, а файл.htaccess обрабатывается, выполняется переписывание URL-адресов.
Если я правильно понял, мне нужно добавить что-то в httpd.config чтобы включить mod_rewrite. Если это так, что мне нужно добавить в httpd.conf или apache.conf ? Пожалуйста, укажите ОС.
Нет, вам не нужно. mod_rewrite - это модуль Apache. Это не имеет никакого отношения к php.ini .
В моем случае проблема возникла даже после всех этих конфигураций (@Pekka упомянул об изменениях в файлах httpd.conf и.htaccess). Это было разрешено только после добавления
к конфигурации виртуального хоста в файле vhost
Изменить на 29/09/2017 (для Apache 2.4 <) См. Этот ответ
Модуль rewrite_module встроен в сервер в большинстве случаев
Использовать.htaccess
Используйте генератор перезаписи мод по адресу http://www.generateit.net/mod-rewrite/
сетевые решения предлагают совет поместить php.ini в cgi-bin, чтобы включить mod_rewrite
Чтобы использовать mod_rewrite, вы можете ввести следующую команду в терминал:
$ su $ passwd ********** # a2enmod rewrite
Перезапустить apache2 после
# service apache2 restart # /etc/init.d/apache2 restart
# service apache2 restart
Просто fyi для людей, поддерживающих mod_rewrite на Debian с Apache2:
Чтобы проверить, включен ли mod_rewrite:
Ls /etc/apache2/mods-enabled | grep rewrite
Если это выдает rewrite.load тогда модуль включен. (Примечание: ваш путь к apache2 может не быть / etc /, хотя это, вероятно, будет.)
Чтобы включить mod_rewrite, если это еще не сделано :
A2enmod rewrite
Перезагрузите все файлы конфигурации apache.
Иногда люди сталкиваются с проблемой — сервер apache не читает ваш файл.htaccess или apache не переписывает URL, а мы используем правильные правила перезаписи в конфигурационных файлах. Это происходит из-за того, что модуль rewrite не включен в apache. Т.к модуль mod_rewrite не включен по умолчанию на сервер, поэтому для использования rewrite, нужно вручную включить mode_rewrite. В моей статье «Включить модуль mod_rewrite для Apache в Debian/Ubuntu» я расскажу как я это могу сделать.
1. Включение модуля mod_rewrite в Apache2
Для этого, я использую команду «a2enmod», чтобы включить любые модули в веб-сервере Apache 2. Так что, используйте следующую команду чтобы включить mod_rewrite модуль для apache:
$ sudo a2enmod rewrite
2. Активировать ReWrite в вирутальном хосте
После включения модуля ReWrite для Apache необходимо добавить «AllowOverride All» в вашем файле конфигурации для виртуального хоста. Этот параметр также может быть включен в глобальном масштабе, путем редактирования основного файла конфигурации apache:
3. Перезапуск конфигурации Apache2
После включения модуля mod_rewrite для Apache нужно перезагрузить сервер Apache2:
# service apache2 restart
Тема «Включить модуль mod_rewrite для Apache в Debian/Ubuntu» завершена.
rewritecond rewriterule (13)
У меня новая версия Apache 2.2 на моей машине Vista, все работает нормально, кроме мод-переписывания.
Я раскоментировал
LoadModule rewrite_module modules/mod_rewrite.s
но ни одно из моих правил перезаписи не работает, даже простые
RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404
Все правила, которые я использую, работают на моем хостинге, поэтому они должны быть в порядке, так что мой вопрос в том, есть ли скрытая вещь в конфигурации apache, которая может блокировать переписывание мода?
Если не указано выше, попробуйте отредактировать / etc / apache2 / sites-enabled / 000-default
почти на вершине вы найдете
Измените AllowOverride None на AllowOverride All
это сработало для меня
Очевидно, есть более чем один способ сделать это, но я бы предложил использовать более стандартный:
ErrorDocument 404 /index.php?page=404
Я бы настоятельно советовал всем, кто хочет включить директивы mod_rewrite в файлах.htacces, чтобы использовать AllowOverride FileInfo вместо того, чтобы разрешать все, как предлагают ВСЕ ответы на этой странице. Грустно видеть, что все эти ответы используют подход «как-давно-работает-это-хорошо», а не пытаться понять последствия предлагаемого «решения». Постарайтесь понять, что вы делаете на своем сервере, и как ограничить привилегии, которые вы только что дали с помощью AllowOverride All . RTFM! , это совершенно очевидно по этому вопросу. Давай, парни, это не ракеты, это просто веб-сервер!
Что сработало для меня (в ubuntu):
Sudo su cd /etc/apache2/mods-enabled ln ../mods-available/rewrite.load rewrite.load
Также, как уже упоминалось, убедитесь, что AllowOverride all установлено в соответствующем разделе /etc/apache2/sites-available/default
Для моей ситуации у меня было
RewriteEngine On
в моем.htaccess , вместе с загружаемым модулем, и он не работал.
Решение моей проблемы состояло в том, чтобы отредактировать мою запись vhost для inlcude
AllowOverride all
в разделе
В первый раз, когда я боролся с правилами mod_rewrite, игнорируя свой трафик, я узнал (разочаровывающе), что я поместил их в неправильный
# Change the log location to suit your system. RewriteLog /var/log/apache-rw.log RewriteLogLevel 2
Эти параметры будут активированы, если вы выполните изящный перезапуск Apache, чтобы вы могли их переработать и внимательно следить за поведением mod_rewrite. Как только ваша проблема будет исправлена, поверните RewriteLogLevel назад и отметьте.
В 100% моего опыта я обнаружил, что RewriteLog помог мне обнаружить проблему с моими правилами перезаписи. Я не могу рекомендовать это достаточно. Удачи в устранении неполадок!
Кроме того, эта закладка - ваш лучший друг: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog
Я просто сделал это
Sudo a2enmod rewrite
то вам необходимо перезапустить службу apache, следуя команде
Sudo service apache2 restart
Новая версия Apache в какой-то мере изменилась. Если ваша версия apache равна 2,4, вам нужно перейти в /etc/apache2/ . Будет файл с именем apache2.conf . Вы должны отредактировать его (у вас должно быть разрешение root). Измените текст каталога таким образом
Теперь перезапустите apache.
Service apache2 reload
Надеюсь, что это работает.
Open terminal и typin a2enmod rewrite , он включит ваш модуль mod_rewrite для Apache.
Затем перейдите в /etc/apache2/sites-available и отредактируйте файл по умолчанию. (Для этого у вас должны быть права на доступ к этому файлу и доступной папке.)
Заменить ниже существующими строками от 4 до 14
DocumentRoot /var/www
Теперь перезапустите apache с помощью /etc/init.d/apache2 restart или service apache2 restart
Повторите очистить URL-тест, и на этот раз он будет передан.
Попробуйте установить: AllowOverride All .
Вторая наиболее распространенная проблема заключается не в том, что включена a2enmod rewrite мод: a2enmod rewrite а затем перезапустить apache.
A2enmod rewrite
Service apache2 restart
mod_rewrite теперь будет включен!
Старый поток, просто хочу поставить, что не устанавливайте AllowOverride для всех, а используйте специальный мод, который вы хотите использовать,
AllowOverride mod_rewrite mod_mime
И эта строка должна быть прокомментирована
LoadModule rewrite_module modules/mod_rewrite.so
Чтобы использовать mod_rewrite вы можете ввести следующую команду в терминал:
Sudo a2enmod rewrite
Перезапустить apache2 после
Sudo /etc/init.d/apache2 restart
Sudo service apache2 restart
или в соответствии с новым унифицированным способом управления системой
Sudo systemctl restart apache2
Затем, если хотите, вы можете использовать следующий.htaccess файл.
Вышеупомянутый файл.htaccess (если он помещен в ваш DocumentRoot) перенаправит весь трафик в файл index.php в DocumentRoot если файл не существует.
Итак, предположим, что у вас есть следующая структура каталогов, а httpdocs - DocumentRoot
Httpdocs/ .htaccess index.php images/ hello.png js/ jquery.js css/ style.css includes/ app/ app.php
Любой файл, который существует в httpdocs, будет передан реквестеру с использованием.htaccess показанного выше, однако все остальные будут перенаправлены на httpdocs/index.php . Ваши файлы приложений в includes/app не будут доступны.
Важно :
Поддержка файла «.htaccess»
есть только на хостинге Linux. На Windows хостинге функцию «.htaccess»
выполняет файл web.config
.
Модуль поддержки «.htaccess» доступен на всех тарифах виртуального хостинга на основе ОС Linux. Если при установке CMS появляется сообщение об отсутствии поддержки «.htaccess» просто проигнорируйте его.
У меня нет файла.htaccess, что делать?
Если вы настраиваете web-сервер Apache, но у вас нет файла .htaccess , создайте его и пропишите нужные директивы.
Чтобы создать .htaccess , войдите в панель управления хостингом по инструкции: Расположите файл .htaccess в каталоге сайта с помощью статьи: .
Если вы случайно удалили файл .htaccess , восстановите его . Или добавить стандартный файл .htaccess для вашей CMS:
В cPanel не видно файла.htaccess
Чтобы увидеть скрытые файлы (начинающиеся с точки) в cPanel, необходимо выполнить следующие действия:
Как включить mod rewrite?
Модуль «mod_rewrite» присутствует на всех тарифных планах хостинга Linux. Чтобы активировать «mod_rewrite» добавьте в файл .htaccess строку вида.