→ Проблемы с.htaccess. Включаем модуль Mod rewrite в Apache Установка mod rewrite

Проблемы с.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

Найдите в файле секцию и измените в ней строку AllowOverride None на AllowOverride All . Должно получиться примерно так:

Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all

Перезапускаем 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). Это было разрешено только после добавления

Order allow,deny Allow from all AllowOverride All

к конфигурации виртуального хоста в файле vhost

Изменить на 29/09/2017 (для Apache 2.4 <) См. Этот ответ

DocumentRoot "E:/Documenten/Dropbox/Dropbox/dummy-htdocs" ServerName dropbox.local ErrorLog "logs/dropbox.local-error.log" CustomLog "logs/dropbox.local-access.log" combined # AllowOverride All # Deprecated # Order Allow,Deny # Deprecated # Allow from all # Deprecated # --New way of doing it Require all granted

Модуль 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:

Options Indexes FollowSymLinks AllowOverride All

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

почти на вершине вы найдете

Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all

Измените 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). Измените текст каталога таким образом

Options Indexes FollowSymLinks AllowOverride All Require all granted

Теперь перезапустите apache.

Service apache2 reload

Надеюсь, что это работает.

Open terminal и typin a2enmod rewrite , он включит ваш модуль mod_rewrite для Apache.

Затем перейдите в /etc/apache2/sites-available и отредактируйте файл по умолчанию. (Для этого у вас должны быть права на доступ к этому файлу и доступной папке.)

Заменить ниже существующими строками от 4 до 14

DocumentRoot /var/www Options FollowSymLinks AllowOverride All Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all

Теперь перезапустите 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 файл.

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]

Вышеупомянутый файл.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 строку вида.

 

 

Это интересно: