Как реализуется возможность выбора адреса для страниц? PHP, Apache2, Mod_Rewrite.

Гость Гость

Очень интересует данный вопрос.

Пару раз доходил мысленно до решения, но были загвоздки)
В общем, решил спросить.

Например, в Facebook, вы можете выбрать адрес (facebook.com/ExampleHAX) и он будет ссылаться на вашу страницу. На отдельную страницу ясно, можно вывести просто:
^/$ на profile.php?username=$ (хранить в строке URL, привязанный к ID url) (PS: не знаю, как делаются красивые урлы, еще не гуглил).

А что делать, если адреса нужны для всех страниц? Например, для групп, приложений и пр?
Сделать таблицу отдельную под названием URL и делать так?
^/$ на url.php?url=$.

Тогда переключимся на ВКонтакте. У них, например, все ссылки имеют адреса типа: wall1_1 (на отдельный валлпост), а wall1 - на всю стену.
Или даже /id$ на /profile.php?id=$. Тогда идет вопрос про данную реализацию.

В итоге: как избежать использование "штатных" (/id$, /wall$, /wall$_$, /audio$, etc) url на приватные (/hochu_sosat, /durov, etc)?

И как сделать редирект (опять к примеру тот же контакт): /profile.php?id=1 (или другой) на личный URL (если есть), если нет - то на /id$.

Спасибо, если хотя бы прочли многабукаф. :)
Дополнено (1). Если еще делать ^/$ на ^/url.php?url=$, то будет url.php перегружен сильно, наверное.

wmuzz wmuzz

>Делать ли отдельную таблицу под названием URL
Можно сделать для "пользовательских" URL. То есть для тех, по виду которых нельзя определить, чей это адрес - группы, пользователя или чего-то еще. Адреса вида wall1_1, id123 и club345 нет смысла выносить в отдельную таблицу. Из адреса уже понятно, где искать нужную сущность.

>как избежать использование "штатных" url на приватные
Запрещать пользователю их занимать/регистрировать.

>И как сделать редирект /profile.php?id=1 на личный URL (если есть), если нет - то на /id$.
Скорее наоборот, ЧПУ (id123 или VasyaPupkin) "переписывается" веб-сервером для выполнения нужного скрипта (profile.php). Как сделать? Для всех ЧПУ использовать RewriteRule, переписывающий URL на адрес точки входа - скрипт, который разберется, что и с какими параметрами выполнить. А URL вида *.php* (или, как чаще делают, URL, указывающий на реально существующих на сервере файл) - не менять.

>Если еще делать ^/$ на ^/url.php?url=$, то будет url.php перегружен сильно, наверное.
Мысль не совсем понятна. Это перенаправление с главной страницы на url.php? Какой смысл?
Если вы хотите перенаправлять все запросы на один скрипт, то скрипту это по барабану - он всего лишь текстовый файл и не может быть перегружен. Более того, единая точка входа - это даже удобно.

Добавить комментарий | Похожие обсуждения

Вопросы и ответы по Вконтакте
Вопросы и ответы

Популярные вопросы и ответы о социальной сети www.vkontakte.ru (vk.com)