Создание Vanity URL - PullRequest
       5

Создание Vanity URL

2 голосов
/ 03 февраля 2011

В настоящее время у меня есть сайт, на котором я хочу дать людям возможность создавать свои собственные URL-адреса. Например, вот мой URL: http://www.hikingsanfrancisco.com/hiker_community/hiker_public_profile.php?community_member_id=2

Видите ли, он назван просто id, что неинтересно, а также плохо для SEO (не то, чтобы здесь это было важно).

В идеале я хочу, чтобы члены моего сайта также указывали свои имена в URL. Как это обычно делается? Так что в моем случае это было бы что-то вроде: http://www.hikingsanfrancisco.com/alex-genadinik и скрытый идентификатор.

Это возможно? Любой совет будет оценен!

Спасибо, Алекс

Ответы [ 3 ]

3 голосов
/ 03 февраля 2011
2 голосов
/ 03 февраля 2011

Обычно это достигается с помощью файла htaccess на сервере с mod_rewrite (большинство серверов Linux). Пример может быть таким:

Options -Indexes
RewriteEngine On
RewriteRule ^([0-9a-zA-Z\-]+)$ $1.php
RewriteRule ^/(alex[\-]genadinik)$ /hiker_community/hiker_public_profile.php?       community_member_name=$1

Это означает, что ваш скрипт hiker_public_profile.php должен будет принять "alex-genadinik" в качестве переменной $ _GET "community_member_name", а затем запросить базу данных по имени вместо идентификатора.

Итак, вы возьмете приведенный выше код, сохраните его в файле с именем «.htaccess», а затем загрузите его в корневой каталог вашего сайта. Рекомендуется изучать регулярные выражения.

2 голосов
/ 03 февраля 2011

Code Igniter - это отличная инфраструктура MVC, которая предоставляет маршруты, основанные на конфигурации, которые можно легко настроить для отправки всех запросов через общий контроллер, где содержимое можно динамически извлекать из базы данных и отображать. *

Вот пример базового правила маршрутизации, которое исключает запросы для пользователей, учащихся и уроки, но направляет все остальные запросы на общий контроллер содержимого.

Таким образом, если вы запросите http://mydomain.com/hiking-and-camping-info,, будет проанализирован URL-адрес, и в базе данных будет найден походная-и-кемпинг-информация , а соответствующий контент будет удален.

Конфигурация маршрутизации:

$route['^(?!lessons|students|users|content).*'] = 'content';

и контроллер содержимого затем берет сегмент URL, находит соответствующий контент и загружает его:

class Content extends Controller {

    function __construct() {
        parent::Controller();
        $this->load->model('Content_model', 'content');
    }

    function index() {
        $content_url = $this->uri->segment(1);
        $data['content'] = $this->content->get_content_by_name($content_url);
        $this->load->view('content', $data);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...