У меня свежая установка Apache 2.2 на машине Vista, все работает хорошо, кроме mod rewrite.
I've uncommented
LoadModule rewrite_module modules/mod_rewrite.s
но ни одно из моих правил перезаписи не работает, даже такие простые, как
RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404
Все правила, которые я использую, работают на моем хостинге, так что они должны быть в порядке, так что мой вопрос в том, есть ли какая-то скрытая вещь в конфигурации apache, которая может блокировать mod rewrite?
Для того, чтобы использовать и mod_rewrite
вы можете ввести следующую команду в терминале:
sudo a2enmod rewrite
Перезапустите apache2 не после
sudo /etc/init.d/apache2 restart
или
sudo service apache2 restart
или согласно новой единой системы управления путем
sudo systemctl restart apache2
Затем, если вы'd, как, можно использовать следующие.файл htaccess`.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Выше .файл 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`. Файлы приложения В включает/приложение не будет доступно.
Для моей ситуации у меня были
RewriteEngine On
в моем .htaccess
, вместе с загружаемым модулем, и это не работало.
Решением моей проблемы было отредактировать запись в vhost так, чтобы она включала в себя
AllowOverride all
в разделе <Directory>
для данного сайта.
Попробуйте установить: всех allowoverride
.
Вторая самая распространенная проблема, не имеющая переписать мод включен: a2enmod переписать
и перезапустите Апач.
Если ни один из вышеуказанных работ, попробуйте отредактировать /etc/apache2 не/сайты-включен/000-по умолчанию
почти на самой вершине вы найдете
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Изменение allowoverride нет " на " всех allowoverride`
этот работал для меня
В Ubuntu:
Выполнить:
a2enmod rewrite
а затем:
service apache2 restart
и mod_rewrite
теперь будет включен!
Существует много способов как можно исправить эту проблему, если вы знаете корень проблемы.
Задача 1
Во-первых, это может быть проблема с Apache, не имея модуля mod_rewrite.модуль c установлен или не включен.
По этой причине, вам придется включить его следующим образом
`команду sudo a2enmod переписать
apache2 не перезапустить службу
Задача 2
Вы также можете, в дополнение к вышесказанному, если он не работает, придется менять правила переопределения из конфигурационный файл Apache (либо с помощью apache2.конф, по протоколу HTTP.conf или 000-по умолчанию файл).
Найдите "в каталоге /var/www в/то"
Изменения в "переопределить никто" на глаз "приоритет"и
Задача 3
Если вы получаете сообщение о том, rewrite модуль не найден, то скорее всего ваш модуль каталог пользователя не включается. По этой причине вы должны включить его.
каталог пользователя командой sudo a2enmod
Читать далее на этом, вы можете посетить этот сайт: http://seventhsoulmountain.blogspot.com/2014/02/wordpress-permalink-ubuntu-problem-solutions.html
Открыть терминал и набрав a2enmod переписать, это позволит вашему
модуль mod_rewrite для апача.
Затем зайдите в файл/etc/apache2 не/сайты-доступно и редактирования файлов по умолчанию. (Для этого вы должны иметь права на запись в этот файл и сайтов-доступной папки.)
Заменить ниже существующих линий от 4 до 14
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Теперь перезапустите Apache ПО в/etc/инит.обслуживание D/apache2 перезагрузка " или " apache2 перезагрузка
Взять еще раз тест чистый URL, и на этот раз он будет принят.
Новые версии Apache и каким-то образом меняться. Если ваш Apache версии 2.4, то вы должны пойти в файле /etc/apache2 не/
. Там будет файл с именем apache2 не.конф
. Вы должны изменить, что один(вы должны иметь права root). Изменить текст справочник такой
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Теперь перезапустите Apache.
service apache2 reload
Надеюсь, что это работает.
Только что заметил, что вы сказали mod_rewrite.s вместо mod_rewrite.so - надеюсь, это опечатка в вашем вопросе, а не в файле httpd.conf! :)
.
Я'больше привык использовать Apache в Linux, но на днях мне пришлось это сделать.
Во-первых, загляните в каталог установки Apache. (Я буду считать, что вы установили его в "C:\Program Files" здесь).
Загляните в папку: "C:\Program Files\Apache Software Foundation\Apache2.2\modules" и убедитесь, что там есть файл mod_rewrite.so. (Он должен быть, он предоставляется как часть стандартной установки.
Затем откройте "C:\Program Files\Apache Software Foundation\Apache2.2\conf" и откройте httpd.conf. Убедитесь, что строка:
#LoadModule rewrite_module modules/mod_rewrite.so
не закомментирована:
LoadModule rewrite_module modules/mod_rewrite.so
Также, если вы хотите включить RewriteEngine по умолчанию, вы можете добавить что-то вроде
<IfModule mod_rewrite>
RewriteEngine On
</IfModule>
в конец вашего файла httpd.conf.
Если нет, убедитесь, что вы указали
RewriteEngine On
где-нибудь в вашем файле .htaccess.
Я просто сделал это
sudo a2enmod rewrite
тогда вам придется перезапустить службу Apache с помощью команды:
sudo service apache2 restart
Очевидно, что существует более одного способа сделать это, но я бы предложил использовать более стандартный:
ErrorDocument 404 /index.php?page=404
Первое время я боролся с mod_rewrite правила, игнорируя мое движение, я узнал (к сожалению), что я поместил их в ту в <рубрики>
, что означало, что мой трафик будет игнорировать всего из них неважно, как хорошо вы написали они. Убедитесь, что это'т происходит с вами:
# Изменить местоположение журналов на любой системе. RewriteLog /ВАР/лог/Апач-РВ.журнал RewriteLogLevel 2
Эти параметры будут активированы, если вы выполняете перезапуска Апача, так что вы можете заменить их и внимательно следить за поведением и mod_rewrite. Как только ваша проблема будет устранена, включите RewriteLogLevel обратно и праздновать.
В 100% из моего опыта, я'ве обнаружили, что RewriteLog помог мне найти проблему с моим переписать правила. Я могу'т рекомендовать это достаточно. Удачи в устранении неполадок!
Кроме того, эта закладка-ваш лучший друг: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog
Старый нить, просто хочу, чтобы положить, что Дон'т поставил allowoverride в ВСЕ вместо того, чтобы использовать конкретный мод, который вы хотите использовать,
AllowOverride mod_rewrite mod_mime
И эта линия должна быть ООН-прокомментировал
LoadModule rewrite_module modules/mod_rewrite.so
Список литературы
Что работал для меня (в Ubuntu):
sudo su
cd /etc/apache2/mods-enabled
ln ../mods-available/rewrite.load rewrite.load
Также, как уже упоминалось, убедитесь, что всех allowoverride
находится в соответствующем разделе файла /etc/apache2 не/сайты-доступно/по умолчанию