Вопросы по сайту на php+mysql - урлы

[Удален]
3238

Сейчас прохожу курс одного известного автора(Попов Евгений), так вот в этом курсе делается блог на php+mysql. Вопрос у меня по урлам для каждого поста. В самом курсе все строиться на передаче переменной методом GET - чрез строку. Под вывод всех статей создана одна и та же страница(например sait.ru/articles), таким образом для вывода конкретной статьи имеющей конкретный id(в базе данных), просто достаточно дописать в строку, например, ?id=1 к одному и тому же файлу. Выглядит это примерно так: sait.ru/articles?id=1 А в этом файле уже прописано, что выводить нужно ту статью, которой соответствует id.

Вот мне интересно, а как же сделать, что бы статьи имели нормальный урл? Не sait.ru/articles?id=1, а sait.ru/articles/kak-sdelat-url.php(или на конце .html)?

kdv12
На сайте с 05.12.2011
Offline
52
#1

Через .htaccess все делается. В интернете полно инфы.

Разработка сайтов любой сложности на 1С-Битрикс. Бесплатные консультации.
siv1987
На сайте с 02.04.2009
Offline
427
#2

Либо создать систему чпу на сайте и разбирать REQUEST_URI на составляющие, либо при помощью реврайтов для мод_реврайта

RewriteEngine On

RewriteRule ^articles/(\d+)-[\w_-]+\.html articles.php?id=$1 [L]

Первый вариант более гибкий, но более сложный в реализации

Второй проще, практически не требует модификации скрипта, но привязывается к конкретным правилам реврайта.

[Удален]
#3

То есть, файл остается один, а урлов много и все чпу? Это наверное всю cms нужно по другому писать?

Логику хочу понять.

bay_ebook
На сайте с 28.05.2010
Offline
111
#4
WeberSeo:
То есть, файл остается один, а урлов много и все чпу? Это наверное всю cms нужно по другому писать?
Логику хочу понять.

Думаю самое правильное - по изучать CodeIgniter - там и роутинг, и чпу можно делать и тд (заодно и основы ООП)

Нужен прогер на php+mysql+понимание чужего кода? (/ru/forum/540660) Вам сюда PHP-шаман (http://php-shaman.pw/)
siv1987
На сайте с 02.04.2009
Offline
427
#5
WeberSeo:
То есть, файл остается один, а урлов много и все чпу? Это наверное всю cms нужно по другому писать?

Почитайте что такое mod_rewrite и для чего он применяется

[Удален]
#6

Что лучше в отношении поисковых систем, как для них лучше сделать нормальные урл? Какие технологии использовать в таком случае?

TV
На сайте с 05.01.2013
Offline
2
#7

для поисковых систем все равно какой вы способ выберете. они знают только про url

[Удален]
#8
TycoonVG:
для поисковых систем все равно какой вы способ выберете. они знают только про url

Если так, то какой подойдет, что бы легче было внедрить, что бы поменьше изменений делать в коде уже написанном? GET значит вообще убирать придется и что-то другое внедрять?

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#9
WeberSeo:
То есть, файл остается один, а урлов много и все чпу? Это наверное всю cms нужно по другому писать?
Логику хочу понять.

Хотите понять логику - напишите отзыв на сайте Попова с просьбой создать еще 1 платный курс по HTACCESS в целом и модРЕврайту в частности:)

RewriteEngine On

RewriteRule ^articles/([\d\w-]+)\.html articles.php?url=$1 [L]

1) создаем дополнительное поле в таблице с постами. Называется пусть оно, примитивно perm_url

2) В файле(articles.php) получаем $_GET['url'].

Выбираем из БД все что связано с этой записью


$sql = "SELECT * FROM `gcms_posts` WHERE `perm_url`='{$_GET['url']}'";

Ну и дальше тоже самое, что и сейчас делается.

Само собой, что при создании поста надо в таблицу писать значение для поля perm_url(руками или транслит-скриптом дело вкуса).

Теперь Мы имеем урлы типа

www.gs.ru/articles/mo9-nova9-mawina-slomalas

В названии статьи можно использовать буквы, цифры, минус/тире

Подпись))
L
На сайте с 07.12.2007
Offline
351
#10

Категорически не согласна со всеми предыдущими ораторами про mod_rewrite.

Делать эти вещи через mod_rewrite - это как лечить ангину через Ж: технически осуществимо, но крайне неудобно и идеологически неправильно.

Конкуренты, путём проставления внешних ссылок на сайт с таким mod_rewrite, легко понаделают Вам дублей страниц с url вида:

www.gs.ru/articles/mo9-nova9-adul.t-group-se.x,

www.gs.ru/articles/mo9-nova9-fu.ck-you-site

Про СЕО-эффект от этого - подумайте сами.

WeberSeo, ЧПУ правильно делать через БД:

sait.ru/articles?id=1 - Вы ищете в БД запись с ID=1

sait.ru/articles/kak-sdelat-url.php - Вы ищете в БД запись с текстом kak-sdelat-url

И какая разница что искать?

PHP-скрипт также работает один и тот же. А расширение .php .html и тп - лучше не делать. А если делаете - его в БД не заносите, просто проверяйте, что оно есть в url /articles/kak-sdelat-url.php и отрезайте перед поиском в Базе Данных.

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