ЧПУ на mod_rewrite

view

Я вже розбирав свого часу, як зробити ЧПУ-посилання. Але в деяких простіших випадкахЧПУ-посилання можна зробити через mod_rewrite. Ось про це я розповім у цій статті, а також покажу приклад реалізації такого механізму.

Припустимо, що Ваші посилання мають такий вигляд:

http://mysite.ru/?view=article&id=1 http://mysite.ru/?view=article&id=2 http://mysite.ru/?view=article& ;id=3

А Ви хочете зробити їх такими:

http://mysite.ru/article/1 http://mysite.ru/article/2 http://mysite.ru/article/3

Очевидно, що другий варіант простіше, коротше і, найголовніше, краще індексуватиметься пошуковими системами. Тепер розберемо, як це можна зробити черезmod_rewrite:

RewriteEngine on RewriteRule ^.*article/(.*)$ index.php?view=article&id=$1

То Ви побачите ось це: "Array ([view] => article [id] => 1 )". А далі вже, гадаю, зрозуміло, що робити з цими вхідними даними.

У цій статті я показав, як робляться ЧПУ-посилання на mod_rewrite. І зверніть увагу, що це лише обробка вхідногоURL. І ще треба, щоб на сторінках усі посилання були самеЧПУ. І щоб це зробити, їх теж потрібно замінювати, і тут без PHP ніяк не обійтися. Якщо раптом Ви не знаєте, як замінювати звичайні посилання на ЧПУ, то настійно рекомендую пройти цей курс.

Додайте до мене в друзіВКонтакте: http://vk.com/myrusakov. Якщо Ви хочете дати оцінку мені та моїй роботі, то напишіть її в моїй групі: http://vk.com /rusakovmy.

Запропонуйте цю статтю друзям:

Якщо Вам сподобався сайт, розмістіть посилання на нього (у себе на сайті, на форумі, в контакті):

Вона виглядає ось так:

  • BB-код посиланнядля форумів (наприклад, можете поставити її у підписі):
  • Коментарі ( 7 ):

    До речі, є інструмент, що переробити це для nginx: http://winginx.com/ru/htaccess

    У платному уроці "PHP/MySQL" при створенні движка саме такий формат URL: http://test/?view=article&id=1 Включаю .htaccess - нуль реакції. Чому? Щось у Денвері міняти?

    Шановний Михайле, поясніть будь ласка, навіщо у рядку RewriteRule ^.*article/(.*)$ index.php?view=article&id=$1 стоять символи ".*" перед "article". Наскільки я розумію, частина шляху перед словом article автоматично має бути шляхом до папки, де лежить цей файл .htaccess

    Вирішив зробити ЧПУ посилання через mod_rewrite і написав таке правило: RewriteEngine On RewriteRule ^(.*)/(.*)$ підвантажуватись на сайт! Скажіть Михайло, чому це може бути? Якщо вам не важко напишіть правильне правило. Дякую!

    Підібрав правило і написав так: RewriteEngine On RewriteCond % !-d RewriteCond % !-f RewriteRule ^(.*)/(.*)? index.php?p=$1&g=$2 [QSA,NC,L] , тепер при завантаженні сайту стилі підвантажуються, а картинки не вантажаться. Що в мене не таке? Підкажіть хто знає, що ще треба зробити з правилом?

    У мене були такі ж проблеми: CSS не підвантажується. Рішення таке: 1) Додаємо рядок параметрів RewriteRule ^.*articleblog/(.*)$ articleblog?id=$1 [QSA] 2) У посиланні на файл стилів у заголовку має бути "/styles/main.css" а не " styles/main.css" (див./www.phpinfo.su/articles/practice/chpu_na_php.html) 3) для іконок та ж умова, що і для стилів: шлях до іконки повинен бути "/images/avatars/icon. png", а не "images/avatars/icon.png"