НЕЗНАЙКА » 2009.11.16 17:05

Пишу вот это
RewriteEngine On
RewriteRule ^([0-9]*)/$ blog.php?id=$1 [L,QSA]
RewriteRule ^([0-9]*)/([0-9]*)/$ $1/post.php?id=$2 [L,QSA]
Не подходит. Норм Ссылки имеют вид.
/index.php
/blog.php?id=xx
/post.php?id=xx
Ну ид передается файлам ниже
После переписи blog ссылки /xx/post.php?id=yy
Вот и не пойму. Если писать правила как первое, т.е. от папки / то получается все ид одинаковы, хотя это к разным файлам. Где узнать о таких случаях или подскажите? Да и подругому тыкал:(

Gemorroj » 2009.11.16 20:16

я не понял суть проблемы. одинаковые ID получаются? если так, то проблема не в mod rewrite

НЕЗНАЙКА » 2009.11.16 20:22

Ну да как бы. Более простые адреса вида ?id=xx&string=yy&page=zz Тут легче, переменные только переписать /xx/yy/zz/ В моем случае все в одной папке но вид хотел сделать такой же

НЕЗНАЙКА » 2009.11.16 20:58

И еще, там в файлах есть замена на смайлы. Так вот путь к ним меняется поэтому нет картинок:( Че та страшная штука получается

Gemorroj » 2009.11.16 21:34

Код:

1
2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

проверка файлов/папок на существование. если файл или папка реально существует, то mod rewrite правило работать не будет.

НЕЗНАЙКА » 2009.11.16 22:33

Вот это вроде работает, но смайлы не работают.

Код:

1
2
3
4
5
6
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteEngine On
RewriteRule ^([0-9]*)/$ blog.php?id=$1 [L]
RewriteRule ^post/([0-9]*)/$ post.php?id=$1 [L]
RewriteRule ^comment/([0-9]*)/$ comment.php?id=$1 [L]

Но пути таки неверные. Вот например в пути comment/1/ назад ссылка /comment/1/blog.php?id=1 Коммент там не нужен. Пойду еще читать

НЕЗНАЙКА » 2009.11.16 22:59

пример тут. Посмотри верхние ссылки

Fuelen » 2009.11.16 23:09

#6, я думаю что то, что написал Геморрой должно быть после включение мод реврайта///
Или лучше мне не думать? :)

Gemorroj » 2009.11.16 23:10

так ведь я не знаю что тебе нужно в итоге получить. как вариант, поставь вначале слеш в ссылках.

НЕЗНАЙКА » 2009.11.16 23:16

Нужно из ссылок
/catalog/
  post.php?id=xx
  blog.php?id=xx
  comment.php?id=xx
Получить
/catalog/
  post/xx/
  xx/
  comment/xx/
Частично это получилось, но работают они только при таком переходе, а ссылки на этих страницах искажаются. Типа comment/xx/post/xx/

Gemorroj » 2009.11.16 23:18

ну так слеш вначале просто поставь. ты же путь указываешь не от корня, браузер ведь не знает что там у тебя модреврайт.

НЕЗНАЙКА » 2009.11.16 23:41

Не так что делаю? Не пойму каким образом делать. Пути в ссылках писать от корня необходимо? А если я перемещу скрипт - все менять снова. Прописав / получаются пути без папки, от корня, но уже не дублируются данные

Gemorroj » 2009.11.17 09:25

dirname($_SERVER['PHP_SELF'])

DarkDaNTe » 2009.11.17 11:49

НЕЗНАЙКА, как вариант, можно сделать так: blog_ID/comment_ID/post_ID/ и проще, и красивее;)

НЕЗНАЙКА » 2009.11.17 14:33

Как вариант, я разное пробовал. Но не понимаю сути. Но файлы инклуда неверно работают. Рано взялсо. Пока оставлю.

Gemorroj » 2009.11.17 15:27

тебе нужно писать путь от корня, а корень определять с помощью конструкции dirname($_SERVER['PHP_SELF']). А начиная с PHP 5.3 простой константой __DIR__

НЕЗНАЙКА » 2009.11.17 15:47

И что, все пишут от корня реальны ссылки? И от корня / не работает же инклуд, а во всех ссылках писать функцию не привычно

Gemorroj » 2009.11.17 16:23

есть корень для браузера, а есть для php. это разные вещи. тебе нужно указывать корень для браузера

НЕЗНАЙКА » 2009.11.17 16:44

А понял теперь почему картинки не заменялись. Путь в браузере относительный