Пишем свой блог: некоторые моменты и вопросы

lantastic

Новичок
Пишем свой блог: некоторые моменты и вопросы

Приветствую!

Решил написать свой движок блога. Пусть каждый пользователь получает страницу вида http://www.mysite.ru/albert/ где будет его блог. Соответственно, обрабатывать запрос http://www.mysite.ru/albert/ должен mod_rewrite, переадресуя запрос на http://www.mysite.ru/blog.php?user=albert

В связи с этим у меня вопрос по mod_rewite, я написал такой код в .htaccess

RewriteEngine On
RewriteBase /
RewriteRule ^([a-z0-9]+)/?$ /blog.php?user=$1

И все бы ничего, но как например хранить картинки, другие страницы сайта, потому что они тоже попадают под mod_rewrite и доступа к ним нет... Неужели blog.php должен обрабатывать все запросы к сайту? Как лучше сделать?
 

Фанат

oncle terrible
Команда форума
Ну, если ты не заведешь физический каталог с картинками для этого юзера, то, естественно, придется обрабатывать все запросы к сайту
 

lantastic

Новичок
Ну а как лучше сделать?

То что каждый пользователь, например albert, получает свой каталог http://www.mysite.ru/albert/ это красиво и удобно для него. Страница с информацией о пользователе, пусть будет иметь вид http://www.mysite.ru/albert/info/ - тоже хорошо смотрится :)

Форум пусть будет на странице http://www.mysite.ru/forum/ . Как сделать так, чтобы mod_rewrite не перенаправил запрос на blog.php?user=forum ?
 

Фанат

oncle terrible
Команда форума
может быть, вместо класса[a-z0-9] подставить что-то конкретное?
 

lantastic

Новичок
При регистрации пользователь указывает латинскими букави или цифрами свой логин (ну как в livejournal, да и почти везде), например albert, соответственно и папку он получает albert. А какой класс ты посоветуешь? Мне кажется с классом проблем нет.

Как вот реально существующие папки например http://www.mysite.ru/forum/ обойти? Хотя можно конечно из blog.php перенаправлять, при user=forum :)

Но тоже, если blog.php?user=forum перенаправляет на http://www.mysite.ru/forum/ ... опять же blog.php сработает :(
 

sage

Новичок
а ты сделай по-другому. создай каталог blog, а уже в нём создавай подкаталоги с именами логинов пользователей. Тогда будет нечто следующее:
Код:
RewriteRule ^blog/([a-z0-9]+)/?$ /blog.php?user=$1
 

lantastic

Новичок
так как тогда будут выглядеть для пользователей их папки? вида http://www.mysite.ru/blog/albert ? так уж не очень интересно...

вот бы виртуальные папки пользователей лежали в корне сайта...
 

Нечто

Психолог РНРClub
Код:
# не трогаем:
RewriteCond %{REQUEST_FILENAME} !-f # реальные файлы
RewriteCond %{REQUEST_FILENAME} !-d # реальные папки
После этих правил добавляешь все, что душе угодно.
 

lantastic

Новичок
Спасибо! Сейчас попробуем :)

-~{}~ 09.03.05 12:32:

Вот что я сейчас использую

Код:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) blog.php?p=$1
Все отлично! Реальные файлы и папки не трогаем, а запрос http://www.mysite.ru/albert/ получает в $p значение albert/ - все правильно вроде бы.

Но вот в чем еще проблема:
запрос http://www.mysite.ru/albert/?post=1 получает в $p тоже самое значение albert/ , то есть значение post=1 теряется :( Как вот это исправить?
 

lantastic

Новичок
Да, как раз так и делал. Ну нет там ?post=1 и все :(
Как он мог пропасть?
 

Нечто

Психолог РНРClub
Код:
RewriteRule ^(.*) blog.php?p=$1 [QSA] # модификатор передачи параметров
 
Сверху