Если вам нравится SbUP Форум, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....

 

ЧПУ для сайта на PHP

Автор xGhost, 17-09-2013, 10:39:34

« назад - далее »

xGhostTopic starter

Есть сайт на самописном движке который http://mondo.ho.ua/ ссылки у которого имеют вид /index.php?cat=3. Хочу сделать ЧПУ. Естественно, разработчик в свое время не позаботился ни о чем, посему в админке можно только картинки добавлять, даже Description нужно редактировать в отдельно взятом ХТМЛ файле.

Прошу помочь с созданием ЧПУ для сайта. Насколько я понимаю нужно сделать следующее:

1. В .htacess прописать правило для Мод Рерайт
2. Создать какой-то php файл в котором будут находится "инструкции" заменяющие index.php?cat=30 на определенное слово. Например, при 3 заменять на mebel

Вот со вторым пунктом проблема. Я попробовал сделать такой файл, но не понимаю как из .htacess туда ссылаться. Или я  вообще неправильно делаю. Доходчивых инструкций не нашел, все больше под стандартные ЦМС с админкой написано. Для справки, ПХП я не знаю, ибо вообще не программист. Нанимать программиста для такой задачи не получится, у заказчика бюджет мизерный.

Пожалуйста подскажите либо литературу, либо, если есть, готовый код


files

По моему, тут ответ исчерпывающий

ЦитироватьИтак, создаем новый .htaccess, открываем его любым текстовым редактором и добавляем строчку:

RewriteEngine On

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

Есть три типа основных URL'ов и, соответственно, три способа превращения их в ЧПУ:


Простые URL, вида: http://www.site.ru/page.html

Чтобы сделать из такого URL ЧПУ вида: http://www.site.ru/page/, необходимо добавить в .htaccess такие строки:

RewriteRule ^page/$ page.html [L]

А чтобы у поисковых систем не возникло желания расклеить этот URL на URL со слэшем в конце и без него, модернизируем код:

RewriteRule ^page$ page/ [R=301,L]
RewriteRule ^page/$ page.html [L]


URL'ы с GET-параметрами, вида: http://www.site.ru/index.php?id=1&cid=17

Здесь помимо основного файла страницы необходимо «отловить» еще и передаваемые GET-параметры. В URL из примера выше, «id» и «cid» — это параметры, которые имеют значения 1 и 17 соответственно. Амперсанд «&» рaзделяет параметры друг от друга.

Чтобы сделать из такого URL ЧПУ вида: http://www.site.ru/shkaf/, пишем строки:

RewriteRule ^shkaf$ shkaf/ [R=301,L]
RewriteRule ^shkaf/$ index.php?id=1&cid=17 [L]

Если ничего не работает (скорее всего, ввиду особенностей сервера), пишем по-другому:

RewriteCond %{QUERY_STRING} ^id=1&cid=17$
RewriteRule ^index.php$ http://www.site.ru/shkaf? [R=301,L]
RewriteRule ^shkaf/$ http://www.site.ru/shkaf? [R=301,L]
RewriteRule ^shkaf id=1&cid=17

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

RewriteRule ^shkaf id=1&cid=17&хxх=1

Здесь мы ко всем действующим параметрам для данного URL добавляем параметр «хxх», который заведомо никогда этим скриптом не обрабатывается.


ЧПУ вида: http://www.site.ru/old_page/

Тут все проще. Открываем существующий .htaccess, находим там правило, которое отвечает за ЧПУ «old_page» и по нему узнаем реальный URL, который маскируется данным ЧПУ. Далее вставляем наше правило выше этого по одной из описанной схеме п.2.

Существующее правило может быть отражено, например, в таком виде:

RewriteRule ^([A-Za-z0-9-]+)/?$ page.php?addres=$1 [L]

Или в ином:

RewriteRule ^old_page/?$ page.php?addres=old_page [L]

Выше этого правила добавляем строки:

RewriteRule ^old_page/?$ new_page/ [R=301,L]
RewriteRule new_page$ new_page/ [R=301,L]
RewriteRule ^new_page/$ page.php?addres=old_page [L]

Источник: http://seva-oshnikov.ru/chpu-htaccess/
Инструменты для WEB и SEO в одном месте
  •  


xGhostTopic starter

Спасибо, действительно здесь проще описано.

То есть для каждой страницы нужно прописать правило?

RewriteRule ^shkaf$ shkaf/ [R=301,L]
RewriteRule ^shkaf/$ index.php?id=1&cid=17 [L]

А если страниц больше сотни будет? Я попробую пока с основными рaзделами.

xGhostTopic starter

Цитата: files от 17-09-2013, 13:23:06
По моему, тут ответ исчерпывающий...

Не помогло. Написал

RewriteEngine On
RewriteCond %{QUERY_STRING} ^cat=30$
RewriteRule ^index.php$ http://mondo.ho.ua/kuhni? [R=301,L]
RewriteRule ^shkaf/$ http://mondo.ho.ua/kuhni? [R=301,L]
RewriteRule ^shkaf cat=30
RewriteRule ^shkaf cat=30&хxх=1

Чтобы из http://mondo.kiev.ua/index.php?cat=30 сделать http://mondo.ho.ua/kuhni

И получил в ответ URL http://mondo.ho.ua/kuhni и ошибку 404... (((

Остальные варианты не работают

Сергей Коча

Я конечно извиняюсь, но мне интересно, у меня типовая ссылка типа этого:
http://www.cotonti.mobi/page.php?al=short_responsive_solutions&pg=columns_and_bbcode_photo&go#page
Как бы желательно, чтобы она выглядела ЧПУ или этого достаточно?
http://www.cotonti.mobi - MobiCot - PHP Mobile Content Management Framework
  •  


xGhostTopic starter

#5
Цитата: Сергeй Коча от 21-09-2013, 01:03:21
Я конечно извиняюсь, но мне интересно, у меня типовая ссылка типа этого:
http://www.cotonti.mobi/page.php?al=short_responsive_solutions&pg=columns_and_bbcode_photo&go#page
Как бы желательно, чтобы она выглядела ЧПУ или этого достаточно?

В том то и дело, что считается и не безосновательно, что ЧПУ Гугл любит гораздо больше чем ".php?"

Добавлено: 21-09-2013, 18:26:13


Решил проблему добавлением такого

Errordоcument 404 http://www.site.ru/404.html

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L,QSA]

Не знаю что именно из этого помогло, но помогло

Добавлено: 21-09-2013, 18:32:46


Цитата: xGhost от 21-09-2013, 10:59:04
Решил проблему добавлением такого
А нет, поспешил. Это же я просто при ошибке возвращаю на главную(((

xGhostTopic starter

В общем, раз никто помочь с вопросом не может, буду продвигать без ЧПУ :'(

Андрей88

Цитата: xGhost от 27-09-2013, 10:32:59
В общем, раз никто помочь с вопросом не может, буду продвигать без ЧПУ :'(
Поясни это заказчику! А тебе запариваться не стоит по этому вопросу!


xGhostTopic starter

Цитата: Андрей88 от 27-09-2013, 10:44:44
Поясни это заказчику! А тебе запариваться не стоит по этому вопросу!
Заказчику все равно как там выглядят ссылки. Ему важно чтобы звонили "с сайта"



Если вам нравится SbUP Форум, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....