mod rewrite - помогите освоить ЧПУ

A4
На сайте с 25.02.2016
Offline
0
626

Что есть:

БД с полями id, name_page, content и другие(не суть важно)

файл function.php который обращается к БД и по id выбирает данные в массив

файл index.php который формирует страницу сайта беря данные из архива

файлы залиты на beget

при загрузке страницы в адресной строке выходит mysite.ru/index.php?art_id=1 (главная страница)

Что хотелось бы:адрес mysite.ru/index.php?art_id=1 имел вид mysite.ru/home

mysite.ru/index.php?art_id=2 имел вид mysite.ru/about

Чтобы адрес страниц брался из БД (столбец name_page в таблице БД) и прописывался в браузере...

Что сделано: пытаюсь вкурить в mod rewrite и написание rewriterules....пока безуспешно...

Очень прошу помощи чтобы разобраться в этом вопросе...без подсказок и конкретных пример думаю что не разберусь...

Июнь
На сайте с 09.12.2015
Offline
19
#1

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


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.* /index.php

Так работает подавляющее большинство движков. А там уже разбирайте адрес на составляющие и делайте запросы к базе данных. Вот тут я описала один из вариантов реализации такой структуры.

A4
На сайте с 25.02.2016
Offline
0
#2

Спасибо. Буду изучать... трудно новичку разобраться во всем этом сразу..=)

Июнь
На сайте с 09.12.2015
Offline
19
#3

Там нет ничего сложного. Вы в точке входа можете получить полный адрес из $_SERVER['REQUEST_URI'], только обрежьте QUERY_STRING и прочее, если вам нужен первый компонент пути. В показанном примере я обрезаю все лишнее от пути, включая ведущий слеш, и делю его на две части по первому слешу, используя explode(), после чего делаю запрос к базе данных на выбор первого компонента пути из таблицы. Если у вас предполагается использование только одного компонента или всего пути без его структурного деления, можете сразу делать запрос к базе данных. Если не используются параметры из QUERY_STRING, можете даже эту строку не отрезать от REQUEST_URI. Если в результате запроса получили требуемую запись из таблицы, можете выдавать страницу с соответствующим содержимым, иначе – страницу 404.

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