опять mod rewrite - подкаталоги =(

J
На сайте с 10.11.2006
Offline
60
750

Есть сайт, вся структура идёт как

/dir1/

/dir1/subdir1/

/dir1/subdir2/

/dir2/

/dir2/subdir3/

и т.д. разделов куча, поэтому создавать правило для каждого как то некорректно

и есть ещё в каждом разделе динамическая страничка вида:

/dir/subdir/index.htm?id=123

Вот хотелось бы сделать что бы она отображалась как

/dir/subdir/123.htm

но не знаю как общее правило создать...

получалось только делать для каждой папки /dir/subdir/, /dir2/subdir2/ , однако их сотни...

Помогите прописать правило.

mod rewrite работает всегда относительно домашнего каталога?

пытался делать так:

RewriteRule ^(.*)/$ index.htm?id=$1 - не пашет.

В чем дело может быть?

Ayavryk
На сайте с 11.10.2003
Offline
209
#1
jstyle:
RewriteRule ^(.*)/$ index.htm?id=$1 - не пашет.
В чем дело может быть?

Так примерно:

RewriteRule ^([0-9a-z]*)/{0,1}([0-9a-z]*)/{0,1}([0-9a-z]*).htm$ index.htm?id=$3&dir=$1&subdir=$2

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
J
На сайте с 10.11.2006
Offline
60
#2

это то понятно, только вот в параметрах ?dir=dir1&subdir=subdir1 нету.

Без них тоесть никак не обойтись?

Ayavryk
На сайте с 11.10.2003
Offline
209
#3

А вот так и обойтись. Когда указывете директиву

RewriteRule ^([0-9a-z]*)/{0,1}([0-9a-z]*)/{0,1}([0-9a-z]*).htm$ index.htm?id=$3&dir=$1&subdir=$2

при вызове http://ваш_сайт/dir1/subdir1/123.htm будет происходить вызов обработчика:

infex.htm?id=123&dir=dir1&subdir=subdir1

а там уж сами расковыривайте переданные параметры.

M
На сайте с 03.10.2006
Offline
52
mox
#4

Если у вас каталоги только двойной вложенности то может так поможет:

RewriteBase /

RewriteRule ^(.*)/(.*).html$ /$1/index.htm?id=$2

RewriteRule ^(.*)/(.*)/(.*)/.html$ /$1/$2/index.htm?id=$3

J
На сайте с 10.11.2006
Offline
60
#5

Ну я про это и говорю.

Надо переделывать обязательно так, что бы в строке параметров обязательно было

?id=123&dir=dir1&subdir=subdir1

а у меня только лишь показывает это:

?id=123

без передачи остальных параметров работать никак не будет :(

придется в скрипте менять что бы ссылки генерил по другому.

J
На сайте с 10.11.2006
Offline
60
#6
mox:
Если у вас каталоги только двойной вложенности то может так поможет:
RewriteBase /
RewriteRule ^(.*)/(.*).html$ /$1/index.htm?id=$2
RewriteRule ^(.*)/(.*)/(.*)/.html$ /$1/$2/index.htm?id=$3

Абалдеть! Работает!!! Пасиба огромное!!!

З.Ы.: никогда не догадался бы, что замены можно брать не только из параметров после ?

ещё раз пасиба! ☝

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий