Перейти к содержимому

Сервис обмена электронных валют


Как работает mod_rewrite

#11 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 05 Май 2010 - 13:00

а как включить? потому что на сервере тоже не работает
ваш пример работает, а на моем скрипте нет :rolleyes:
в чем проблема?

блин разобрался, надо в адресной строке добавлять чпу адрес, а я думал что он автоматически переименуется, деревня!

тогда такие вопросы, а как сделать, чтоб ссылки автоматически переводились в чпу
и главное после добавление чпу, он перестал добавлять файл стиля :D

и как сделать тоже для
http://wushu/index.p...e=article&cat=2
и
http://wushu/index.php?module
  • 0

#12 reaboom

reaboom
  • Пользователь
  • 40 сообщений
  • Репутация: 0

Отправлено 05 Май 2010 - 14:19

Что-бы css добавлялись, нужно в .htaccess еще вот это добавить, после RewriteEngine on:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Это запрещает перенаправление при обращение к существующим папкам или директориям.

Для http://wushu/index.p...e=article&cat=2 добавьте:
RewriteRule ([a-z]+)/([0-9]+)/ index.php?module=$1&cat=$2
Для http://wushu/index.php?module:
RewriteRule ([a-z]+)// index.php?module=$1

а как сделать, чтоб ссылки автоматически переводились в чпу

Тут уже в скрипте надо генерировать ссылки не вида index.php?...., а вида /abc/123/123/. Автоматически их не переведешь.
  • 0

#13 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 05 Май 2010 - 14:26

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ([a-z]+)// index.php?module=$1
RewriteRule ([a-z]+)/([0-9]+)/ index.php?module=$1&cat=$2
RewriteRule ([a-z]+)/([0-9]+)/([0-9]+)/ index.php?module=$1&cat=$2&id=$3


работает только RewriteRule ([a-z]+)/([0-9]+)/([0-9]+)/ index.php?module=$1&cat=$2&id=$3 бред какой-то
  • 0

#14 reaboom

reaboom
  • Пользователь
  • 40 сообщений
  • Репутация: 0

Отправлено 05 Май 2010 - 14:28

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ([a-z]+)/ index.php?module=$1
RewriteRule ([a-z]+)/([0-9]+)/ index.php?module=$1&cat=$2
RewriteRule ([a-z]+)/([0-9]+)/([0-9]+)/ index.php?module=$1&cat=$2&id=$3
У вас там опять небольшая ошибка была.
У меня работают все три случая:
http://localhost/test/asd/
http://localhost/test/asd/123/
http://localhost/test/asd/123/123/
  • 0

#15 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 05 Май 2010 - 14:33

работает, просто не тот файл правил
не работает
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

добавил / при подключении файла стилей и заработало

а как для такой строки сделать
http://wushu/index.p...le&cat=2&page=2

перестали обрабатываться GET данные, типа пишет страница не найдена
  • 0

#16 reaboom

reaboom
  • Пользователь
  • 40 сообщений
  • Репутация: 0

Отправлено 05 Май 2010 - 14:46

а как для такой строки сделать
http://wushu/index.p...le&cat=2&page=2

Вот же, уже было:
RewriteRule ([a-z]+)/([0-9]+)/([0-9]+)/ index.php?module=$1&cat=$2&id=$3

не работает
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Странно, должно работать. А где файл стилей лежит?
  • 0

#17 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 05 Май 2010 - 14:51

css/style.css тут
исправил
на
/css/style.css
заработало

перестал GET параметры понимать, ппц :(
  • 0

#18 reaboom

reaboom
  • Пользователь
  • 40 сообщений
  • Репутация: 0

Отправлено 05 Май 2010 - 15:04

перестал GET параметры понимать, ппц

Тут нужно регулярку по-сложнее писать в RewriteRule. Домой приду, напишу, а то сейчас уже выхожу.
  • 0

#19 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 05 Май 2010 - 15:08

а как сделать из http://wushu/index.p...le&cat=2&page=2
article/2/page/2/
а из http://wushu/index.p...=article&page=2
article/page/2/
  • 0

#20 reaboom

reaboom
  • Пользователь
  • 40 сообщений
  • Репутация: 0

Отправлено 05 Май 2010 - 16:33

а как сделать из http://wushu/index.p...le&cat=2&page=2
article/2/page/2/
а из http://wushu/index.p...=article&page=2
article/page/2/

1:
RewriteRule ([a-z]+)/([0-9]+)/([0-9]+)/ http://wushu/index.php?module=$1&cat=$2&page=$3
2:
RewriteRule ([a-z]+)/([0-9]+)/ index.php?module=$1&page=$2

Все по сути тоже самое, меняются только параметры.

Скачайте книгу (должна быть в электронном варианте, но не уверен) "PHP трюки" Джек Д. Харрингтон, там в трюке №60 (в разных изданиях могут быть разные номера) буквально на 3 страницах довольно хорошо описывается, как работать с mod_rewrite. В общем почитайте, сразу все поймете.

Кстати, после прочтения главы из книги, советую еще почитать про маршрутизацию с помощью PHP (правда не знаю где). А то, к каждому запросу регулярку в .htaccess писать, это не дело :(
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru