Помощник
|
ЧПУ ссылки, .htaccess |
Banderas
|
Сообщение
#1
|
||
|
|
||
|
|||
ZiTosS |
17.2.2011, 19:12;
Ответить: ZiTosS
Сообщение
#2
|
|
Banderas, Я знаю как минимум 2 подхода реализации ЧПУ в естественной форме:
1) Mod Rewrite 2) PHP router (Статья) Решаем, что лучше - (английский): http://stackoverflow.com/questions/1868154...e-or-php-router С чего-то всегда нужно начинать, думаю стоит поюзать способ с mod_rewrite в чистом виде, заодно и регулярки поднатаскаешь Вообщем способ с mod_rewrite прост до свинства для твоего примера: # так будем обозначать комментарнии RewriteEngine On # включаем модуль mod_rewrite # далее можно использовать правила разбора RewriteRule # RewriteRule [правило разбора] [куда перенаправить сервер] [флаги] # ^...$ - предполагается полное совпадение # () - карманы, которые затем можно использовать в качестве значений так - $[номер кармана] RewriteRule ^[_-A-Za-z0-9]+/([0-9]+)-[_A-Za-z0-9]+.html$ articles.php?id=$1 [L] # [_-A-Za-z0-9]+ - это у нас название категории, оно нам нафиг не нужно, но под маску подходить должно # / - слеш он и в Африке слеш. # ([0-9]+) - это id статьи, помещенный в карман, должен сосоять из последовательности цифр # Далее идет дефис "-" # [_A-Za-z0-9]+ - название статьи тоже нам не нужно, но под регулярку подходить должно # .html - ну и окончание URL Всё очень просто и понятно, когда пользователь обращается к серверу, на котором лежит файл .htaccess с mod_rewrite. Модуль сервака читает содержимое данного файла и пытается сопоставить УРЛ, запрошенный пользователем с правилами (регулярками), если найдется совпадение, серверу для обработки будет отдан URL с подменой. Примеры URL: http://site.ru/category1/15-Nazvanie_article.html - нормально пройдет http://site.ru/category-my/341-article_name.html - нормально пройдет http://site.ru/category1/15-Nazvanie-article.html - не пройдет, название статьи не пройдет регулярку из-за дефиса http://site.ru/!category1/15-Nazvanie_article.html - не пройдет, категория не пройдет регулярку из-за знака "!" http://site.ru/category1/15-Nazvanie_article.htm - не пройдет, т.к. в регулярке .html, а не .htm http://site.ru/category1/subcategory/15-Nazvanie_article.html - не пройдет, у нас регулярка не рассчитана под подкатегории Конечно ты мне не показал, как у тебя происходит выдача одной статьи, категории и т.д., но суть должен уловить. Поблагодарили: (0) |
|
|
Banderas
|
Сообщение
#3
|
|
Спасибо, как только освобожусь попробую все на деле!
У меня два файла, которые отвечают за вывод статей: 1) файл категорий categories.php ( 1,12 килобайт ) Кол-во скачиваний: 99 2) файл вывода выбранной статьи view_article.php ( 1,86 килобайт ) Кол-во скачиваний: 91 |
|
|
Banderas
|
Сообщение
#4
|
|
Спасибо, сначала не понял, но Дима мне помог собрать силы и добить этот вопрос, сейчас кое что получилось, но не все так как хочется...
Есть ссылка http://pop.ru/view_article.php?id=22 Благодаря следующему коду RewriteEngine On RewriteRule ^article-id-([0-9]+)/? view_article.php?id=$1 [L] я могу к ней обратиться как http://pop.ru/article-id-22 Но когда я в браузере листаю статьи, она отображается как в первом варианте, а я хочу то бы по умолчанию было как у втором Вообще, в идеале хочу сделать что бы вместо id было название статьи, как это сделать (алгоритм) |
|
|
ZiTosS |
6.3.2011, 23:49;
Ответить: ZiTosS
Сообщение
#5
|
|
|
Banderas,
Но когда я в браузере листаю статьи, она отображается как в первом варианте, а я хочу то бы по умолчанию было как у втором Тут всё зависит от того, как ты ссылки пропишешь в своём скрипте при выводе инфы в браузер. Генерируй ссылку в нужном формате. Вообще, в идеале хочу сделать что бы вместо id было название статьи, как это сделать (алгоритм) Есть два варианта реализации подобной фичи: 1) id + транслитом заголовок статьи - при обращении вырезать только id и работать с ним, а транслит только для красоты 2) транслит заголовка - при обращении к странице, тебе надо будет вырезать название латиницы далее сверять его с латиницей всех заголовков статей в базе (можно в базе специально создать поле с заголовком статьи латиницей, чтоб искать по базе, а не в скрипте). Если нашлось совпадение - это наша статья. Так же не забываем, что даже в ЧПУ нам надо определяться, к чему мы обращаемся (особенно если скрипт или ваш движок работает не только со статьями) Я бы сделал так: RewriteRule ^/article/([0-9]+)-title-article.html$ view_article.php?id=$1 [L]
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Размещу ваши ссылки на форумах. | 94 | marybraun | 86611 | Вчера, 20:16 автор: marybraun |
|
Статейные ссылки. Ручное размещение. Средний тИЦ - 500+ | 113 | creatos | 47515 | 11.3.2024, 18:21 автор: xVOVAx |
|
SEO Линк Билдинг под Бурж | Вечные ссылки США, Европа и Мир с Гарантией | 17 | Needmylink1 | 6306 | 11.3.2024, 12:33 автор: Needmylink1 |
|
Крауд ссылки с форумов, блогов, порталов. Жирные ссылки с Ua,Ru, Бурж площадок. Вечные ссылки в статьях на собственных сайтах Быстро, качественно и ответственно! |
137 | vetalbon | 65345 | 9.3.2024, 1:28 автор: hutty777 |
|
Ссылки за которые не стыдно! Качественный линк билдинг сервис под Бурж от Westrank. Честный прайс. | 61 | DaoDog | 46511 | 19.2.2024, 16:02 автор: WestRank_Support |
Текстовая версия | Сейчас: 19.3.2024, 16:48 |