красивые ссылки из базы данных - PullRequest
3 голосов
/ 27 апреля 2011

Я пытаюсь получить красивые URL-адреса на моем сайте .. сейчас они выглядят так:

www.site.com/tag.php?id=1

Я хочу изменить это на

www.site.com/tag/1/slug

моя таблица базы данных имеет идентификатор, Название, Информация, Slug

Я читал в Интернете о слизняках, но, будучи новичком в php, не повезло, кто-нибудь может мне помочь с этим.

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

Сначала создайте файл .htaccess со следующим:

# Turn on rewrite engine and redirect broken requests to index
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* router.php [L,QSA]
</IfModule>

Затем установите следующий код для router.php:

<?php

$segments=explode('/',trim($_SERVER['REQUEST_URI'],'/'),3);

switch($segments[0]){
    case 'tag': // tag/[id]/[slug]
        $_REQUEST['id']=(int)$segments[1];
        $_GET['id']=(int)$segments[1];
        $slug=$segments[2];
        require_once('tag.php');
        break;
}

?>

Дальнейшее уточнение

Htaccess

Концепция htaccess очень проста.Вместо того чтобы прислушиваться к шаблонам URL (как это делало старое программное обеспечение htaccess), мы просто перенаправляем весь трафик, который в противном случае привел бы к 404 - router.php, что, в свою очередь, позаботится о том, чтобы выполнить то, что требуется.Есть 3 записи переписать;для (sym) ссылок, файлов и каталогов (/aaa рассматривается как файл, а /aaa/bbb - как папка)

Маршрутизатор

$_SERVER['REQUEST_URI']выглядит как "/tag/1/slug".Сначала мы обрезаем его на избыточные косые черты, а затем разбиваем его на 3 элемента (поэтому мы не влияем на слаг, который может содержать другие косые черты), print_r при использовании $segments (для тегов / 45 / Hello / World) будет выглядетьнапример:

Array
(
    [0] => tag
    [1] => 45
    [2] => Hello/World
)

Наконец, поскольку я вижу, что вы хотите перенаправить на tags.php?id=1, вам нужно вручную установить $_REQUEST['id'] и $_GET['id'] и загрузить tags.php.

1 голос
/ 27 апреля 2011

попробуйте это руководство:

http://blogs.sitepoint.com/guide-url-rewriting/

// не мой блог ...

или то, что кажется лучше:

http://www.yourhtmlsource.com/sitemanagement/urlrewriting.html

EDIT:

это для apache, так как я предположил, что это то, что вы использовали

...