Помогите настроить ЧПУ с помощью htaccess и mod_rewrite

Здравствуйте!
Вообщем такая проблема, есть файл .htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^(\w+)$ ?c=profile&n=$1 [L]

Options -Indexes
Вот это правило заменяет вот такой урл site.com/index.php?c=profile&n=nickname на site.com/nickname
RewriteRule ^(\w+)$ ?c=profile&n=$1 [L]
Теперь я захотел сделать короткие урлы для групп или как они на моем сайте названы журналы, вот таким вот правлом:
RewriteRule ^/journal([0-9]*)$ index.php?c=journal&id=$1
т.е. оно должно урл такого вида site.com/index.php?c=journal&id=136 сделать site.com/journal136

Написал новый htaccess вот таким:
RewriteEngine On
RewriteBase /
RewriteRule ^(\w+)$ ?c=profile&n=$1 [L]
RewriteRule ^/journal([0-9]*)$ index.php?c=journal&id=$1

Options -Indexes
Но теперь второе правило входит в конфликт с первым, и если ввести адрес вида site.com/journal136 - сервер думает что это пользователь с ником journal136, как мне исправить ситуацию?

Заранее спасибо!
 

eax

#
Вообще флаг [L] говорит о том, что если это правило совпадет, то те которые ниже проверяться не будут. А под w+ будет подходить любое имя юзера.
 

HEm

Сетевой бобер
site.com/nickname

а потом надо будет сделать категории каталога в духе
site.com/category

а например ктото из юзеров возьмет себе ник совпадающий с псевдонимом одной из категорий

и каждый раз придется разруливать

порядок должен начинаться с самого начала, для профилей пользователей например адреса /profile/nickname, для категорий каталога /catalog/cat1 для тегов /tags/tag1 и так далее

у сеошников есть миф, имхо не совсем обоснованный, что чем короче урл тем лучше, в одном интернет-магазине пришлось укладывать алиасы категорий, тегов и брендов в ложе site.com/aaa, что привело к усложнению логики и периодическим ее правкам
 
site.com/nickname

а потом надо будет сделать категории каталога в духе
site.com/category

а например ктото из юзеров возьмет себе ник совпадающий с псевдонимом одной из категорий

и каждый раз придется разруливать
Можно будет поставить запрет на определенные именна, нет? :)
 

HEm

Сетевой бобер
У меня сайт - это социальная сеть, мне нужны короткие урлы для того чтобы пользователям было удоно делится ссылками между друг другом как в Вконтакте, http://vk.com/public39203060 - группа, http://vk.com/murrchalka - адрес юзера
нудык и то не спонтанные названия, обрати внимание, названия групп соответствуют жесткой маске

я бы в качестве примера приятной глазу соцсети рекомендовал хабрахабр, а не этот убогий вконтактик
 
пользователям пофиг. Они эти ссылки копируют, не руками набирают.
Ссылки должны быть красивыми, а не длинными, если всем было бы пофиг, то ЧПУ по сути своей не существовало бы.

нудык и то не спонтанные названия, обрати внимание, названия групп соответствуют жесткой маске

я бы в качестве примера приятной глазу соцсети рекомендовал хабрахабр, а не этот убогий вконтактик
Да, я хочу сделать точно так же как у них, site.com/journal123, не могу только никак написать нужные правила для htaccess
 

Фанат

oncle terrible
Команда форума
С точкки зрения именно "ЧПУ" ссылки должны быть понятными

Но вообще здесь разговор ни о чём идёт. Спор тупоконечников с остроконечниками.
 

Василий М.

Новичок
У меня сайт - это социальная сеть, мне нужны короткие урлы для того чтобы пользователям было удоно делится ссылками между друг другом как в Вконтакте, http://vk.com/public39203060 - группа, http://vk.com/murrchalka - адрес юзера
отвратительные линки
куда приятнее было бы
http://server.com/community/otdam_darom
http://server.com/users/murrchalka
 

Василий М.

Новичок
хреново и не гибко ты её решил
гимор тебе с такой структурой URL обеспечен, когда ты захочешь на первом уровне ещё какой-нибудь ЧПУ сделать.

journal123 - URL из 90-х годов. не красивый, убогий, характерный для программиста, которому было лень поставить слеш, что бы URL смотрелся нормально - /journal/123
 

Василий М.

Новичок
RewriteRule ^(\w+)$ ?c=profile&n=$1 [L]
а потом надо будет сделать категории каталога в духе
site.com/category

а например ктото из юзеров возьмет себе ник совпадающий с псевдонимом одной из категорий

и каждый раз придется разруливать

порядок должен начинаться с самого начала, для профилей пользователей например адреса /profile/nickname, для категорий каталога /catalog/cat1 для тегов /tags/tag1 и так далее
тебе сказали,
Преренаправляй всё (что нужно) просто на index.php, а в скриптах уже разруливай маршруты.
если бы ты послушался, то понял, что подобный стиль - это реально волшебная палочка для создания абсолютно любых URL на сайте.
 

eax

#
Кстати как лучше разруливать маршруты?
На ум приходит, что лучше
RewriteRule ^.*$ index.php?q=$0 и вытаскивать из $_GET['q']
Или по какой-то причине нужно делать так:
RewriteRule ^.*$ index.php/$0 а затем анализируется в скрипте $_SERVER['REQUEST_URI']
 

Beavis

Banned
PHP:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
а затем анализируется в скрипте $_SERVER['REQUEST_URI']
 

Василий М.

Новичок
у меня так
PHP:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(js|ico|gif|jpg|jpeg|png|css|cur|php|phtml|doc|xls|txt)$ [NC]
RewriteRule (.*) index.php?_path=/$1&%{QUERY_STRING} [L]
 

Beavis

Banned
какой смысл передавать в index.php GET-параметром _path?

про перечисление расширений я вообще молчу..)
 
  • Like
Реакции: AmdY
Сверху