Сделать сайт на ЧПУ - какой вариант выбрать

ProgMaster
На сайте с 04.04.2006
Offline
86
884

Всех приветствую.

Есть движок со страницами разделов вида http://www.site.ru/catalog/index.php?ID=5 и страницами товарный предложений (карточек товаров) вида http://www.site.ru/catalog/tovar.php?ID=5.

Сайт - интернет магазин с более чем 1000 товаров.

Страницы сайта проиндексированы, но сайт пока не продвигался (внешний ссылок нет).

Мысли на тему: преобразование сайта на ЧПУ.

1. Дописываем к названию каждого раздела и товара - название латинницей, как хотим видеть в url.

2. При генерации ссылок движком отображаем ссылки вида http://www.site.ru/seria/model

3. В .htacsess прописываем правила

RewriteRule ^seria/?$ /catalog/index.php?ID=5 [L]

чтобы при открытии http://www.site.ru/seria/ показывалась страница http://www.site.ru/catalog/index.php?ID=5, а url был ЧПУ.

Так можно сделать, когда сайт небольшой, ну или можно потратить время прописать в htacsess все разделы. Но ведь помимо разделов есть товары, прописывать которые вручную думаю неправильно.

А ведь еще надо прописать редиректы со старых страниц, хотя на этапе можно просто закрыть старые страницы от индексации.

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

Можно ли это как-то реализовать средствами PHP?

fine
На сайте с 01.12.2005
Offline
151
#1

Я бы лучше сделала ЧПУ вида http://www.site.ru/catalog/5 и http://www.site.ru/catalog/tovar/5. Проще на такие ЧПУ сменить будет.

ProgMaster
На сайте с 04.04.2006
Offline
86
#2
fine:
Я бы лучше сделала ЧПУ вида http://www.site.ru/catalog/5 и http://www.site.ru/catalog/tovar/5. Проще на такие ЧПУ сменить будет.

Да, так можно преобразовать по шаблону, но необходимо сделать именно как указано, чтобы все было индивидуально и уникально.

А как работают движки с позиционированием ЧПУ сразу, ведь адреса у всех свои, т.е. их де-то в настройках надо задать.

Есть какой-то вариант с переадресацией любого адреса на index.php, в котором сидит функция, которая и сгенерит нужный контент для контретного адреса. Т.е. как я понимаю, в htacsess прописано условие, при котором любой адрес идет на индексную страницу, а функция PHP обрабатывает uri и выдает соответствующий этому uri контент.

Linkpusher
На сайте с 28.12.2007
Offline
176
#3

id -> md5(ЧПУ)

Точу ножи. Буквально. Есть отзывы. Заказать заточку в МСК и Подольске можно через Телеграмм.
A
На сайте с 29.12.2007
Offline
68
#4
ProgMaster:
Можно ли это как-то реализовать средствами PHP?

Конечно можно. Рекомендую посмотреть, как устроены роуты в ko3. Вот, например, как аналогичное сделано у меня:

class Route extends Kohana_Route {


public static function main_route($uri) {
$result = array(
'controller' => 'main',
'action' => 'index',
);
if (!User::is_login() && empty($uri)) {
$result['action'] = 'presentation';
} else {
$cities = City::all();
$route_cities = array();
foreach ($cities as $c)
$route_cities[] = $c['url'];
$route_cities = implode('|', $route_cities);
$compiled = Route::compile('(<city>(/<category>))', array('city' => $route_cities, 'category' => '\d+'));
if (preg_match($compiled, $uri, $matches)) {
$result['city'] = Arr::get($matches, 'city', NULL);
$result['category'] = Arr::get($matches, 'category', NULL);
} else
$result = FALSE;
}
return $result;
}

}

Route::set('city', array('Route', 'main_route'));
B
На сайте с 23.01.2009
Offline
37
#5

Читала об одном английском эксперименте по чпу. Так вывод был, чпу не влияет на выдачу гугла. Урл просто должен быть по возможности короче

G2
На сайте с 27.10.2009
Offline
62
#6

ЧПУ не влияют на выдачу, но они удобнее для людей.

Делаются как

RewriteRule .* index.php/$0 [PT]

плюс механизм разбора в PHP. Как пример можно действительно взять Kohana 3 или CodeIgniter 2. Суть - все запросы попадают в index.php, он парсит строку адреса и передает дальше нужному контроллеру.

НО! Я бы перенес код на какой-либо фреймворк, нет смысла изобретать велосипед на грабельной тяге - грабли имеют особенность бить больно и беспощадно.

КакМаршрутник (http://goo.gl/forms/hMgaH0s9E5) — как маршрутник, но работает.
Linkpusher
На сайте с 28.12.2007
Offline
176
#7

baltik, а где в аббревиатуре ЧПУ упоминается Google?

ProgMaster
На сайте с 04.04.2006
Offline
86
#8

Мне необходимо сделать так:

В базе данных есть "Разделы", "Подразделы", "товарные позиции". (подразделы идентифицируются по их связи с главным разделом в базе, т.е. вид страниц для разделов и подразделов одинаковый "index.php?ID=32").

Надо добавить вручную или автоматом для каждого раздела (подраздела, позиции) дополнительное поле в базе "URL" и туда вписывать название латиницей.

При формировании ссылок на сайте привести их к виду: /razdel/podrazdel/tovar/

Причем, если это подраздел, ему соответствует определенный ID в базе, и адрес страницы не может быть вида http://www.site.ru/podrazdel/ а может быть только http://www.site.ru/razdel/podrazdel/ .

Т.е. мне нужен "контроллер" разбора $_SERVER['REQUEST_URI'], который получается по значениям будет делать выборку в базе....... Хотя тут я не представляю пока как сделать. Несколько страниц сейчас вручную через htacsess сделал, но там прописано как упоминал ранее, что мол, если /razdel/ то открывать /catalog/index.php?ID=44, т.е. сервер обрабатывает запросы к базе по индексу ID=44, но то что мне требуется - не будет прописано в htacsess...

Если у кого-то есть идеи, как переделать существующий сайт - буду благодарен.

Мне необходимо оставить существующий движок, и просто его доработать.

aklimovv
На сайте с 18.01.2008
Offline
224
#9

Мне всегда было интересно, а что это меняет, неужели кто-то считает, что человек запоминает структуру ссылки :). Да пользователю вообще наплевать, а ПС прекрасно индексируют.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий