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

Реферальная программа Мегаплана

Партнерская программа Kredov

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

#1 surfer

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

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

как это работает? не получаецца :rolleyes:

 

 

  • 0

#2 reaboom

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

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

Что конкретно не получается?

RewriteEngine On
Это включает mod_rewrite

RewriteRule /([a-b]+)/([0-9]+)/ index.php?first=$1&second=$2
Это добавляет правило, которое перенаправляет с URL вида: /abcd/1234/ на index.php?first=abcd&second=1234.

Еще много всяких параметров существует, но на этом все базируется.
  • 0

#3 surfer

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

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

зачем чпу нужны?
что можно из этого сделать index.php?module=article&cat=6&id=12
  • 0

#4 reaboom

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

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

зачем чпу нужны?

Ну... это, как-бы, модно, красиво, удобно и, насколько я знаю, поисковики любят.

что можно из этого сделать index.php?module=article&cat=6&id=12

Ну к примеру это /article/6/12/:
RewriteRule ([a-z]+)/([0-9]+)/([0-9]+)/ index.php?module=$1&cat=$2&id=$3

  • 0

#5 surfer

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

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

а полностью файл .htaccess как быдет выглядеть?
  • 0

#6 reaboom

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

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

RewriteEngine On

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

  • 0

#7 surfer

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

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

сделал так не работает

RewriteEngine on
RewriteRule ([a-z]+)/([0-9]+)/([0-9]+)/ index.php?module=article&cat=6&id=12


и как сделать, чтоб он работал, когда другие цифры стоят в ссылке?
  • 0

#8 reaboom

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

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

Вы сделали не так, внимательней:
RewriteRule ([a-z]+)/([0-9]+)/([0-9]+)/ index.php?module=$1&cat=$2&id=$3
index.php?module=$1&cat=$2&id=$3
  • 0

#9 surfer

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

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

почему так?

кстати так тоже не работает!

у меня дэнвер стоит на локалке отлаживаю.
  • 0

#10 reaboom

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

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

почему так?

Так... Как-же вам объяснить...
([a-z]+)/([0-9]+)/([0-9]+)/ вот у нас регулярное выражение, которое соответствует URL, в котором вместо ([a-z]+) могут стоять любое количество (больше 0) любых букв, а вместо ([0-9]+) любое количество любых цифр.
Если выражение [a-z]+ берется в скобки, это означает, что мы этот параметр можем передать в нужный нам URL (на который будет происходить переадресация). В нашем случае в скобки взято 3 выражения. Значит мы хотим передать 3 параметра. Передаем мы их след. образом: index.php?module=$1&cat=$2&id=$3, где вместо $1 - автоматически будет подставлено значение первого выражения в скобках, $2 - второго, $3 - третьего.

кстати так тоже не работает!

Проверил - работает, может mod_rewrite не включен или .htaccess запрещен?

Выложил архив с моим рабочим примером на всякий случай. При обращении к http://localhost/test/asd/123/123/ должен выдать:
module--asd
cat--123
id--123

Прикрепленные файлы

  • Прикрепленный файл  test.zip   489байт   Количество загрузок: 149

  • 0

robot

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


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