2011-02-13 2 views
1

Я хотел бы создать Vanity URL s для веб-приложения, построенного ontop Playframework.URL тщеславия с Playframework

Я пытался добавить параметр для index метода в главной странице Application, это будет работать, если я называю http://localhost:9000/?vanity_url и не http://localhost:9000/vanity_url.

Как я могу это достичь? Я хотел бы пользователям создавать свои собственные адреса для решение должно быть динамичным, так же, как на Facebook

ответ

7

В пути вы положили бы

GET /{<[a-z]+>fanPage}/? Page.showFanPage

С этим вы можете получить:

http://localhost:9000/facebook

Я также рекомендую использовать метод slugify, предоставляемый платформой воспроизведения, как правило, вы оба проверите, существует ли пула в дате спускать, и посмотреть на слизняка, чтобы захватить данные (название Fanpage /, который является владельцем страницы вентилятора/сколько просмотров/и т.д. и т.п.)

В таблицах:

Имя: Fanpage

PageId целое или BIGINT
название VARCHAR
пробкового VARCHAR уникальный
владелец целое
содержание текста

В коде:

public static void showFanPage(String fanPage) { 
    // use models to look for the slug 
    // grab the data 
    // do what you need to do 
} 

Я собираюсь на примерах здесь о том, как создать URLs, так как я не знаю, что приложение, которое вы строите:
GET /post/slug/? Page.createPage
POST /post/slug/? Page.processPage

public static void createPage() { 
     // remember to create the template 
     render(); 
} 

public static void processPage(String slugName) { 
     // slugName refers to the input field 
     // check if the slug exists and throw error if it does 
     // process 
} 

(обратите внимание, это просто пример, я не знаю, какое приложение вы создаете) Надеюсь, это поможет, сообщите мне, если это то, что вы имели в виду.

+0

Я бы хотел, чтобы пользователи создавали пользовательские URL-адреса, чтобы указать их профиль, например. 'HTTP: // www.example.com/allenskd'. 'allenskd' будет уникальным для каждого пользователя и будет использоваться для извлечения их профиля пользователя. Из документов 'sluggify' не будет работать с его _purely_ для ** [SEO] (http://stackoverflow.com/questions/4433620/play-framework-how-do-lookup-an-item-from- a-slugify-url) ** Решение для регулярного выражения работает, но теперь нужно проверять URL-адреса, такие как URL-адреса диспетчера, такие как '/ admin /' – n002213f

+1

. Это обычная проблема в рамках со времени Play! ударит мгновенное совпадение и загрузит маршрут, не учитывая других соперников, обычно я избегаю этой проблемы, просто организуя маршруты по приоритету (сначала маршруты администратора и т. д.), это недостаток, который я видел с помощью Play !, я не знаю, будут ли они когда-либо исправляйте это также, как маршрутизатор управляет маршрутами, и да, все четкие URL-адреса (симпатичные URL-адреса, но вы его называете) предназначены исключительно для SEO, он работает, если пользователь хочет получить креатив (но это зависит от вашего приложения) – allenskd

+0

в файле 'routes',' Этот файл определяет все маршруты приложений (сначала маршруты с более высоким приоритетом) ', помещая маршрут внизу, решает проблему в приведенном выше комментарии. – n002213f

Смежные вопросы