Как сделать, чтобы работал .htaccess на localhost?

Yan

Новичок
Добрый день!
У меня не работает .htaccess на localhost.
Хочу сделать банальный редирект, чтобы убрать из адресной строки index.php.
Для этого в httpd.conf поменял AllowOverride none на AllowOverride All и раскомментировал строку LoadModule rewrite_module modules/mod_rewrite.so.
В phpinfo() указано Loaded Modules: mod_rewrite, т.е. должно быть все нормально.
В папке рядом с файлом index.php создал файл .htaccess и в нем написал следующее:
Код:
AddDefaultCharset UTF-8
RewriteEngine On
RewriteRule ^index.php$ / [QSA,R]
Но когда пишу localhost/folder/index.php, то появляется главная страница, но и адресная строка остается такой же, т.е. не происходит редиректа на localhost/folder/
Как это исправить, чтобы .htaccess работал?
Спасибо!

Решение, чтобы сервер понимал htaccess!
В httpd.conf вместо
Код:
<Directory />
  AllowOverride All
  Require all denied
</Directory>
надо написать
Код:
<Directory C:\Server\data\htdocs\folder\>
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>
где folder\ - это папка, в которой лежит index.php и .htaccess
 
Последнее редактирование:

флоппик

promotor fidei
Команда форума
Партнер клуба
Ты неверно понимаешь, как работает mod_rewrite. Он ничего не меняет в строке браузера, да и не мог бы, он серверный компонент. Он делает прямо противоположное — дописывает неполные пути типа / до таких путей, которые позволят запустить подходящий обработчик, например, распознать /info внутри серверной логики как /index.php?module=info и тд.
 

Yan

Новичок
Ты неверно понимаешь, как работает mod_rewrite. Он ничего не меняет в строке браузера, да и не мог бы, он серверный компонент. Он делает прямо противоположное — дописывает неполные пути типа / до таких путей, которые позволят запустить подходящий обработчик, например, распознать /info внутри серверной логики как /index.php?module=info и тд.
А как мне тогда сделать, чтобы при переходе по адресу localhost/folder/index.php, я оказался на адресе localhost/folder/? Читаю, что могу это сделать, но ничего не происходит.
 

Yan

Новичок
Все, что бы я ни писал в .htaccess, ни на что не влияет вообще, т.е. этот файл просто игнорируется
 

AnrDaemon

Продвинутый новичок
Логирование включайте уже…
Там и ваш ответ будет.

P.S.
И обратите внимание на директиву RewriteBase.
 

Yan

Новичок
Логирование включайте уже…
Там и ваш ответ будет.
Почитал про логирование, вроде так делается, изменил htaccess, но все равно ничего не происходит:

Код:
AddDefaultCharset UTF-8

RewriteEngine On
RewriteRule ^index.php$ / [QSA,R]

#disable displaying errors to visitors
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off

#enable php errors logging
php_flag log_errors on

# set file to log to
php_value error_log php_errors.log
Но файл php_errors.log остается пустым постоянно
 

Yan

Новичок
Все, получилось сделать так, чтобы сервер видел .htaccess, не до конца оказывается дописал настройки в httpd.conf, описание для таких же, как я, в описании добавлено.

Вопрос ко всем! При наличии такой строки:
Код:
RewriteRule ^index.php$ / [QSA,R]
меня перекидывает в браузере в каталог localhost, а если написать вот так:
Код:
RewriteRule ^.* https://www.google.ru/ [R]
то перехожу на сайт гугл, все норм. Т.е. неправильно написано регулярное выражение. Подскажите, как сделать так, чтобы из localhost/folder/index.php происходил редирект на localhost/folder/.
 
Последнее редактирование:
Сверху