mod_rewrite на практике

Lestat

Новичок
mod_rewrite на практике

скажите, как с помощью mod_rewrite можно получить то, что указано ниже (очень универсальное):
index.php?view=gb
/view/gb.html
index.php?a=panel&CONTENT=menu
/a/panel/content/menu.html
index.php?a=panel&CONTENT=body
/a/panel/content/body.html
index.php?a=panel&NEWS=edit
/a/panel/news/edit.hmtl
index.php?a=panel&NEWS=new
/a/panel/news/new.html
index.php?body=news&id=100
/body/news/id/100.html
index.php?body=article&read=300
/body/article/read/300.html
index.php?body=article&read=300&page=3
/body/article/read/300/page/3.html
и т.д.

-~{}~ 20.08.05 19:41:

если можно, то полность весь .htaccess приведите
 

alexhemp

Новичок
Lestat
А ключи от квартиры, где деньги лежат может тоже сразу?

Ты привел кучу каких-то адресов, не понятно что ты хочешь. Выдели общий шаблон того что было до и того что ты хочешь получить после.

-~{}~ 20.08.05 20:50:

а прочитал твой другой пост.

Тебе нужно реорганизовать URL

вместо

index.php?a=panel&CONTENT=menu

нужно что-то вроде
index.php?a=panel&type=CONTENT&item=menu

ну а потом пишешь правило для mod_rewrite

превращающее запрос

/panel/CONTENT/menu.html
в
index.php?a=panel&type=CONTENT&item=menu

Но это уже задание для самостоятельной реализации, иначе тебе будет не интересно...
 

physh

поедатель запятых
блин, должно быть, кпопку "поиск по форуму" опять заклинило... они ее так редко тут прочищают...

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#Solutions
 

Lestat

Новичок
Так и не смог разобратся с синтаксисом RewriteRule.. :(

ну скажем есть у меня страница с адресом:
index.php?view=gb
мне нужно, что бы она была доступна по адресу /view/gb.html
а есть с таким:
index.php?body=article&read=300&page=3
и стала доступной так: /body/article/read/300/page/3.html

щас попробую составить что то типа шаблона:

x.ru/index.php?body=article&read=300&page=3
[домен]/[переменная]/[значение]/[переменная]/[значение]/[последняя переменная]/[значение].html
x.ru/body/article/read/300/page/3.html

но также должнен работать короткий путь, например:
x.ru/index.php?view=news
[домен]/[последняя переменная]/[значение].html
x.ru/view/news.html

суть в общем в том, что значение последней переменной он делает html файлом, а все предыдущие переменные и их значения выстраивает в директории.
и вложеность таких директорий должна быть не ограничена..
просто кое где у меня доходит и до 6 переменных в GET
 

Lestat

Новичок
искал, нашел, не понял..
может кто нибуть все такие напишет как это должно выглядеть?
 

alexhemp

Новичок
Lestat

Ты унифицируй схему преобразований. У тебя нет понимания того что тебе нужно.

И совершенно не обязательно делать одно универсальное правило для преобразования URL.
 

Вадим

Guest
Вот посмотри мой примерчик, сам помню долго парился, сейчас пользуюсь таким.

Options +FollowSymLinks
RewriteEngine on
RewriteBase /

#Облагораживание URL'ов
RewriteRule ^(.*)index.html http://127.0.0.1/Novozhenov/index.php [L,QSA]

# Соответственно это определение параметров для кокретного урла
RewriteRule ^(.*)bio.html$ http://127.0.0.1/Novozhenov/index.php?p_tb=sys_main&id=2 [L,QSA]

# А это пример с плавающими параметрами (тут не повредит знание регулярных выражений)
RewriteRule ^(.*)p([0-9]+)_([0-9]+).html$ http://127.0.0.1/Novozhenov/index.php?p_tb=part_$2&id=$3 [L,QSA]

#Закрыть доступ к конфигурации сервера
RewriteRule ^.htaccess*$ - [F]

А вообще конечно по поиску полазий, много чего интересного найдешь.
 

WMix

герр M:)ller
Партнер клуба
вообше яб посоветывал делать какраз наоборот!!
в смысле mod_rewrite использовать чтоб ссылку типа /view/gb.html
заменить на index.php?view=gb
чтоб ссылки были в подобаюшем виде... чтоб запуск был через один файл

твоя задача решается на уровне пхп
PHP:
$query = $_SERVER['QUERY_STRING'];
$query = str_replace("=","/",$query);
$query = str_replace("&","/",$$query);
$query = "/".$query.".html";
 
Сверху