Как сделать крассивые ссылки (ЧПУ), которые можно менять на лету

Zakhar

Новичок
Как сделать крассивые ссылки (ЧПУ), которые можно менять на лету

вот примерно банальная структура сайта http://www.site.ru/index.html?razdel=1
http://www.site.ru/index.html?razdel=3 ну и так далее.
а хотелось бы сделать перевод например:
http://www.site.ru/books/ переходит автоматом на http://www.site.ru/index.html?razdel=1
Это надо не для всех razdel, только выборочно

Вот пытался сделать через mod_rewrite

RewriteMap red z:/home/mod/www/mod/map.txt
RewriteRule ^/.*$ /index.php?b={red:$1}/ [R]
вот так примерно, не знаю правильно это или нет, но проблема в том что RewriteMap нельзя использовать в .htaccess, а хотелось бы что б все можно было менять "на лету" не перегружая апач, т.е. просто меняя map.txt допустим кодом РНР.

map.txt содержит:
1 book
2 door

Еще идея была создавать соответсвующие паппки а в них ложить index.php с текстом header ("location:...."), ну это коряво как-то.

Что можете посоветовать?

Проблема еще в том, что, если использовать хостинг в некоторых случаях ради тебя одного не будут апач перезапускать
 

zerkms

TDD infected
Команда форума
Zakhar
смысл типичную логику приложения перекладывать на апач?
может просто уже в приложении определять какому разделу соответствует какой id?
 

Zakhar

Новичок
Автор оригинала: zerkms
Zakhar
смысл типичную логику приложения перекладывать на апач?
может просто уже в приложении определять какому разделу соответствует какой id?
Я не совсем понимаю, каким образом это можно сделать? Если можно примеры, только не через 404 ошибку.
Я б не хотел бы создавать специально разделы для этого
 

zerkms

TDD infected
Команда форума
самый банальный вариант:

мод_реврайтом http://www.site.ru/books/ переписываешь в http://www.site.ru/index.html?section_name=books

в скрипте делаешь
$sections = array(
'books' => 1,
...
);

if(isset($sections[$_GET['section_name]])) {
$id = $sections[$_GET['section_name]];
}

всё, теперь у тебя есть id раздела как ты в самом начале и показывал (http://www.site.ru/index.html?razdel=1)
 

Zakhar

Новичок
Спасибо.

А вот можно .htaccess изменять при помощи РНР? А если даже можно мне кажется это не очень хорошо делать. Это нужно для удобства.

я б хотел через RewriteMap, но он не пашет в .htaccess :(
 

zerkms

TDD infected
Команда форума
Zakhar
чем моё решение либо какая-нибудь его произвольная вариация тебя не устраивает?
 

Zakhar

Новичок
Всем устраивает, спасибо

-~{}~ 15.03.06 21:17:

решил сделать через "виртуальные" хосты
в .htaccess пишу:

RewriteEngine On
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.website\.net$
RewriteRule ^(.+)$ %{HTTP_HOST}$1 [C]
RewriteRule ^www\.([^.]+)\.website\.net \index.php?razdel=$1

оно не работает

Подскажите пожалуйста почему???

-~{}~ 15.03.06 21:18:

просто не выдает станицу, пишет 404 ошибку
 
Сверху