Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Apache 2. mod_rewrite не работает
 
 автор: Гавриленко Дмитрий   (19.08.2011 в 19:28)   письмо автору
 
 

Пример взял с сайта htaccess.net.ru

RewriteEngine On
Options FollowSymLinks

RewriteRule /search.php?query=^(.*)$ /поиск_$1.html

Т.е когда я обращаюсь по ссылке /search.php?query=Яndex ушел спать
Адрес должен преобразоваться в
/поиск_%D0%AFndex+%D1%83%D1%88%D0%B5%D0%BB+%D1%81%D0%BF%D0%B0%D1%82%D1%8C.html

Но этого не происходит. Почему?

  Ответить  
 
 автор: f111   (19.08.2011 в 19:45)   письмо автору
 
   для: Гавриленко Дмитрий   (19.08.2011 в 19:28)
 

может так
RewriteRule /search.php?query=^(.*)$ /поиск_$1.html [R]

  Ответить  
 
 автор: Гавриленко Дмитрий   (19.08.2011 в 21:00)   письмо автору
 
   для: f111   (19.08.2011 в 19:45)
 

Неа... Линк http://localhost/tests/Apache/search.php?query=777

Так и остается в первозданном виде.

  Ответить  
 
 автор: f111   (19.08.2011 в 22:34)   письмо автору
 
   для: Гавриленко Дмитрий   (19.08.2011 в 21:00)
 

..

  Ответить  
 
 автор: Гавриленко Дмитрий   (20.08.2011 в 12:25)   письмо автору
 
   для: Гавриленко Дмитрий   (19.08.2011 в 19:28)
 

Что делать-то?

  Ответить  
 
 автор: Гавриленко Дмитрий   (20.08.2011 в 16:58)   письмо автору
 
   для: Гавриленко Дмитрий   (20.08.2011 в 12:25)
 

Вопрос решен! Точку на экранировал! Какие флаги надо добавить, что перенаправление было, а адрес в адресной строке, остался то же??

  Ответить  
 
 автор: cheops   (20.08.2011 в 16:57)   письмо автору
 
   для: Гавриленко Дмитрий   (19.08.2011 в 19:28)
 

Добавьте флаг [QSA], без него RewriteRule отбрасывает все GET-параметры.

  Ответить  
 
 автор: Гавриленко Дмитрий   (21.08.2011 в 11:41)   письмо автору
 
   для: cheops   (20.08.2011 в 16:57)
 

Подскажите, почему не работает? выдает 404


Options FollowSymLinks
RewriteEngine On
RewriteRule ^/pages/([a-z]+)\.html$ http://www.google.ru/search?q=$1

И не могли бы вы подсказать где можно найти много много хорошей качественной инфы о htaccess кроме htaccess.net.ru?

  Ответить  
 
 автор: cheops   (21.08.2011 в 11:51)   письмо автору
 
   для: Гавриленко Дмитрий   (21.08.2011 в 11:41)
 

Вы включите лог mod_rewrite - будет много проще отлаживать
RewriteLog "logs/rewrite.log"
RewriteLogLevel 9

PS Связанного изложения информации по конфигурации Apache я давно не видел. Мы как-то хотели писать книгу по нему, но все забуксовало и заглохло.

  Ответить  
 
 автор: Гавриленко Дмитрий   (21.08.2011 в 11:58)   письмо автору
 
   для: cheops   (21.08.2011 в 11:51)
 

Ошибка сервера 500.
В логах сервера RewriteLog not allowed here

  Ответить  
 
 автор: cheops   (21.08.2011 в 12:08)   письмо автору
 
   для: Гавриленко Дмитрий   (21.08.2011 в 11:58)
 

А вы его где размещаете? Эти директивы доступны только для виртуального хоста? Вы сейчас на локальной машине отлаживаете или на сервере?

  Ответить  
 
 автор: Гавриленко Дмитрий   (21.08.2011 в 12:11)   письмо автору
 
   для: cheops   (21.08.2011 в 12:08)
 

На локальной. Файл логов лежит в папке с htaccess
Пробовал и RewriteLog "D:\sites\site.ru\www\1.log" и RewriteLog "1.log"

  Ответить  
 
 автор: cheops   (21.08.2011 в 12:27)   письмо автору
 
   для: Гавриленко Дмитрий   (21.08.2011 в 12:11)
 

Пропишите эти директивы в виртуальном хосте, они не работают в .htaccess.

  Ответить  
 
 автор: Гавриленко Дмитрий   (21.08.2011 в 20:16)   письмо автору
 
   для: cheops   (21.08.2011 в 12:27)
 

Я чет не понял что он имел ввиду.



127.0.0.1 - - [21/Aug/2011:20:10:26 +0400] [site.ru/sid#99ad88][rid#241ce80/initial] (3) [perdir D:/sites/site.ru/www/] strip per-dir prefix: D:/sites/site.ru/www/pages/readingfor -> pages/readingfor

127.0.0.1 - - [21/Aug/2011:20:10:26 +0400] [site.ru/sid#99ad88][rid#241ce80/initial] (3) [perdir D:/sites/site.ru/www/] applying pattern '^/pages/(.*)$' to uri 'pages/readingfor'

127.0.0.1 - - [21/Aug/2011:20:10:26 +0400] [site.ru/sid#99ad88][rid#241ce80/initial] (1) [perdir D:/sites/site.ru/www/] pass through D:/sites/site.ru/www/pages/readingfor

127.0.0.1 - - [21/Aug/2011:20:10:26 +0400] [site.ru/sid#99ad88][rid#2420e90/initial] (3) [perdir D:/sites/site.ru/www/] strip per-dir prefix: D:/sites/site.ru/www/favicon.ico -> favicon.ico

127.0.0.1 - - [21/Aug/2011:20:10:26 +0400] [site.ru/sid#99ad88][rid#2420e90/initial] (3) [perdir D:/sites/site.ru/www/] applying pattern '^/pages/(.*)$' to uri 'favicon.ico'

127.0.0.1 - - [21/Aug/2011:20:10:26 +0400] [site.ru/sid#99ad88][rid#2420e90/initial] (1) [perdir D:/sites/site.ru/www/] pass through D:/sites/site.ru/www/favicon.ico

  Ответить  
 
 автор: cheops   (22.08.2011 в 12:34)   письмо автору
 
   для: Гавриленко Дмитрий   (21.08.2011 в 20:16)
 

Ага, видите где происходит отказ, регулярное выражение ждет слэш, а его нет
'^/pages/(.*)$' to uri 'pages/readingfor'
исправьте правила следующим образом
Options FollowSymLinks 
RewriteEngine On 
RewriteRule ^pages/([a-z]+)\.html$ http://www.google.ru/search?q=$1

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования