Как создать сложный URL-адрес, как StackOverflow? - PullRequest
6 голосов
/ 15 января 2011

Я использую playframework, и я надеюсь генерировать сложные URL, такие как stackoverflow.Например, я хочу создать URL-адрес вопроса:

http://aaa.com/questions/123456/How-to-generator-a-complex-url

Обратите внимание на последнюю часть, это название вопроса.

Но я не знаю, как это сделать.

ОБНОВЛЕНО

В структуре воспроизведения мы можем определить маршруты в файле conf/routes, и я делаю это:

GET /questions/{<\d+>id} Questions.show

Таким образом, когда мы вызываем @{Questions.show(id)} в представлениях, он сгенерирует:

http://aaa.com/questions/123456

Но как сгенерировать заголовок часть, это сложно.

Ответы [ 2 ]

11 голосов
/ 15 января 2011

С помощью playframework легко создать такой URL.В вашем файле маршрутов вы добавляете это:

GET /questions/{id}/{title}       YourController.yourMethod

Для получения дополнительной информации см. Документ на сайте playframework о маршрутизации

На вашей html-странице:

<a href="@{YourController.yourMethod(id,title.slugify())}">

метод slugifyиз JavaExtensions, очистите свой заголовок от зарезервированных символов ( см. документ )

2 голосов
/ 15 января 2011

Это делает серверный переписчик URL. В случае SO не имеет значения, что вы набираете {...} / questions / 4698625 / how-to-generate-complex-url-like-stackoverflow или {...} / questions / 4698625 - они оба перенаправляют на один и тот же контент. Так что этот постфикс используется только для повышения читабельности URL.

Чтобы узнать больше о переписывании URL, см. этот пост .

UPD: чтобы сгенерировать такой постфикс,

  1. взять название контента,
  2. сжатие нескольких пробелов в один
  3. заменить все пробелы тире (-)
  4. удалить все не буквенные символы из заголовка

Лучше выполнять эти операции с регулярными выражениями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...