mod_rewrite на практике

  • Автор темы Автор темы Lestat
  • Дата начала Дата начала

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 приведите
 
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

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

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#Solutions
 
Так и не смог разобратся с синтаксисом 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

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

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

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]

А вообще конечно по поиску полазий, много чего интересного найдешь.
 
вообше яб посоветывал делать какраз наоборот!!
в смысле 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";
 
Сверху