ЧПУ на mod_rewrite

Я вже розбирав свого часу, як зробити ЧПУ-посилання. Але в деяких простіших випадкахЧПУ-посилання можна зробити через 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.
Запропонуйте цю статтю друзям:
Якщо Вам сподобався сайт, розмістіть посилання на нього (у себе на сайті, на форумі, в контакті):
Вона виглядає ось так:
Коментарі ( 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"