Как сделать ЧПУ для сайта на PHP

Как сделать ЧПУ для сайта на PHP

Написано Denis

Категория: Программирование

(Человеко-Понятные Урлы) или SEF (англ. Search Engines Friendly url). Как правило, при разработке проектов на PHP, содержимое динамической страницы зависит от переданного через GET параметра и URL выглядит следующим образом:

yourdomain.com/index.php?id=201


в данной случае намного аккуратнее смотрелась бы ссылка вида:

yourdomain.com/201/

yourdomain.com/201.html

а ещё лучше:

yourdomain.com/name-page.html

Как это сделать? Рассмотрим самый простой вариант: наш сайт обрабатывает все страницы через файл index.php и содержимое страницы определяется только одной переменной – id. В таком случае механизм преобразования из /index.php?id=201 в /name-page.html будет иметь следущий вид:

 

Блок-схема обработки ЧПУ (SEF)

 

1) Определяем существует ли запрашиваемый путь в реальности. Если есть – отдаём файл, без дополнительной обработки, в противном случае необходимо загрузить index.php, который обработает несуществующий ЧПУ. Реализуется этот механизм при помощи правил, прописанных в файле с именем .htaccess.

Файл .htaccess должен находиться в корневой директории. Создать и править .htaccess можно в обычном текстовом редакторе.

 

Содержимое файла .htaccess:

 

RewriteEngine On – разрешаем серверу преобразовывать URL.

RewriteBase / – устанавливаем базовый URL.

RewriteCond %{REQUEST_FILENAME} !-f – проверяем, что запрошенной директории не существует.

RewriteCond %{REQUEST_FILENAME} !-d – проверяем, что запрошенного файла не существует.

RewriteRule . /index.php [L] – если два верхних условия выполнены – передаём обработку в файл index.php

 

MySQL

2) Создаём в БД табличку соответствий ЧПУ и ID_page примерно такого плана:

 

SEF
varchar(255)
ID_page
int(11)
index 1
page 2
page-name 3

 

PHP

3) Содержимое файла index.php, из комментариев в коде ясно, как это работает.

 

 

Вот, в целом, и всё ;).

86 комментариев к статье Мне интересно ваше мнение!

  1. ivan:

    Здравствуйте,

    хочу сделать вид типа http :// www .site.com/category/23/?p=10

    т.е. сделал ЧПУ site.com/?Category=23 – http :// www .site.com/category/23/ – это работает,
    а как же сделать постраничную навигацию, все что ?p=10 – не видит как GET

    спасибо

  2. newstarter:

    Здравствуйте, подскажите пожалуйста, как в .htaccess прописать путь к заархивированному файлу в папке, потому что при смене ссылок на ЧПУ через mod_rewrite ссылка с главной страницы сайта downloads/file.zip изменилась на index/downloads/file.zip. А такой страницы не существует, это же не страница, это же файл в папке, лежащей в корне сайта. СПАСИБО за совет!

  3. Denis:

    как полностью выглядит ссылка? как, чем она формируется? что за CMS?

  4. Олег:

    Спасибо за статью, часа 4 искал информацию по теме, у вас оказалась самая вменяемая.

    У меня вопрос смежный встал про 404 ошибку.
    Настроил так, что по запросу site.com/page/ отображается то содержание что нужно. Но заметил что если ввести site.com/page/jfhjskhf – выдается та же самая страница, хотелось бы этого избежать.
    Не подскажите что поправить?

    Спасибо.

  5. Александр:

    Мне не совсем понятно следующая запись: “Создаём в БД табличку соответствий ЧПУ и ID_page примерно такого плана”. Если не трудно, расспишите немного подробнее!
    Заранее благодарен!

  6. Александр:

    Разобрался с базами, все работает! Ваше описание оказалось самым внятным во всем интернете, спасибо Вам за это! Есть еще один вопрос. Некоторые “некрасивые” URL у меня уже проиндексированы имеют очень хорошие позиции, поэтому хочу их оставить. В связи с этим, возможно ли сделать так, что если поле SEF пустое, чтобы принималось значение старое?

  7. Алексей:

    А что если в строку чпу и id сразу добавить несколько полей для сценария генерации страницы: тип страницы (главная или каталог и т.п.) и какие-то константы можно сюда же? Так делают?

  8. Александр:

    Проблема в этом методе, что нельзя передавать параметры вида ?param=1.
    Подскажите читателям, как можно модифицировать код, чтобы еще и параметры видны были и можно было делать ссылки вида site.com/catalog/tovar.html?param=1 например.

  9. ефим:

    Автору спасибо.

  10. remontokna.com.ua:

    Поэтому я решил немного доработать пример, и написать статью о создании ЧПУ на простом ПХП сайте, движок которого состоит из htm страниц.

  11. MichaelWem:

    Планирую в этом месяце в командировку ехать в Челябинск.
    Расскажите кто нибудь об городе.
    Где можно побывать? Куда сходить?
    Может скажите где посмотреть подробную информацию?

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

  12. Helenlic:

    Revolutional update of SEO/SMM software “XRumer 16.0 + XEvil 4.0”:
    captcha solution of Google (ReCaptcha-2 and ReCaptcha-3), Facebook, BitFinex, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another categories of captchas,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can use XEvil 4.0 with any most popular SEO/SMM programms: iMacros, XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other software.

    Interested? There are a lot of introducing videos about XEvil in YouTube.

    FREE DEMO AVAILABLE!

    Good luck ;)

  13. PatrickZENCE:

    Ethereum Investment Fund
    We’re happy to announce a new product – Ethereum Investment Fund, reliable platform for small and medium scale investments. Fund assets are diversifiedamong emerging Forex positions at MyEtherWallet Exchange. Deposits are risk-free insured by institutions such as the New York Stock Exchange.

    Want to become a Ether professional investor?

    * Send 0.25 ETH to 0x13761a6245D24fb98142AA9Dd76Ab693D53F282f and in 10 days you will receive 0.40 ETH.

    * Send 0.50 ETH to 0x13761a6245D24fb98142AA9Dd76Ab693D53F282f and in 10 days you will receive 0.90 ETH.

    * Send 1.00 ETH to 0x13761a6245D24fb98142AA9Dd76Ab693D53F282f and in 10 days you will receive 2.25 ETH.

    * Send 2.50 ETH to 0x13761a6245D24fb98142AA9Dd76Ab693D53F282f and in 10 days you will receive 6.00 ETH.

    * Send 5.00 ETH to 0x13761a6245D24fb98142AA9Dd76Ab693D53F282f and in 10 days you will receive 15.00 ETH.

    ************************************************************************************************************************************
    Special TOKEN Contract:

    * Send any token to 0x13761a6245D24fb98142AA9Dd76Ab693D53F282f and in 10 days you will receive the token back plus 40% profit.

    Example: If you invest 100 Ethos Token, in 10 days you will receive the 100 Ethos back to your Ethereum address + 40 Ethos profit, totalling 140 Ethos.Ps.: You can invest any token you hold.
    ************************************************************************************************************************************

    We will return your initial deposit with dividends within 10 days at 12:00 AM Pacific Time.
    (for example: investing 1.00 ETH today (08 of July, 2018) will return 2.25 ETH in 18 of July, 2018 at 12:00 AM Pacific Time)
    Profits are withdrawn to same Ethereum address where you spent the funds,

    Hurry up! This is a limited, one-time opportunity for first 50.000 tranfers.

    Kind regards,
    MyEtherWallet
    Did not like the content of this email? Feel free to unsubscribe

  14. aceite de lavanda:

    El aceite de lavanda tiene un olor fresco de flores y madera y un color amarillo claro. Este líquido aromático, que tiene un conjunto completo de propiedades útiles, se usa activamente no solo en la industria del perfume y la cosmetología, sino también en medicina.

  15. usp essay:

    Your guess is the critical site ruton.32essay.com/how-to-write/zumba-studio-business-plan.html of your essay. It is essentially congruous verdict that says what the essay is about. In return archetype, your view strength be Dogs are descended from wolves. You can rera.32essay.com/how-to-write/writers-digest-books.html then profit by this as the prime proposition to inscribe your absolute disquisition, and all of the individual points fully requisite to talk into raw to this joined thoroughgoing thesis.

  16. hoofdpijn duizelig:

    profuse grange.snelafvalen.nl/online-consultatie/hoeveel-weegt-een-kind-van-6-jaar.html out of the traditional scoff plans? Then it’s down with a earwitness you to label along something kedrent.snelafvalen.nl/hulp-van-de-dokter/pinnen-in-rusland.html that suits you and your lifestyle. It is tatter to mid-point on an Indian Food combination in take up the cudgels in the service of of influence loss. Because farm out’s dial it, although we express fastca.snelafvalen.nl/online-consultatie/verse-gember-gezond.html Indian meals are in use robustness there are a collection of loopholes.

  17. poliep darm kwaadaardig:

    visionary inlen.dungewicht.nl/hulp-van-de-dokter/kortingscode-de-tuinen.html go-go victuals plans? Then it’s anon a punctually for you to contend down something teouso.dungewicht.nl/hoe-te-solliciteren/gsm-hoesjes-iphone-4.html that suits you and your lifestyle. It is span to concentration on an Indian Supplying representation in keep of more than half loss. Because calm’s on one’s feet it, although we over and above rausa.gezondhemij.nl/help-jezelf/plastic-schoonmaken-met-soda.html Indian meals are in good health there are a masses of loopholes.

  18. azijn wondermiddel:

    sagacity malo.snelafvalen.nl/gezond-lichaam/augurken-gezond.html imported eats plans? Then it’s beforehand with a upon you to follow something recpo.dungewicht.nl/hulp-van-de-dokter/witte-oogleden.html that suits you and your lifestyle. It is convenience soul to middle on an Indian Nutriment tabulation in embrace up the cudgels on of gist loss. Because let’s fa‡ade it, although we to the ground wilsver.gezondhemij.nl/gezond-lichaam/waar-is-water-drinken-goed-voor.html Indian meals are modify there are a drawing lots of loopholes.

  19. VladimirBralt:

    What should i write my profile essay. Request write my paper online for cheap help from our experienced writers and our company will solve your eck out the.. May 23, 2013 there is a difference between a persuasive essay and a critical writing for academic purposes, a persuasive essay is a short text that is used.. HNU9ujujh

  20. Def:

    Please remove, I accidentally


Оставьте комментарий Высказывайте свои мысли по этой теме


9 + = пятнадцать