O que é uma lesma?

Uma lesma é uma parte da URL quando você está acessando um recurso. Digamos que você tenha uma URL, como a abaixo, que exibe todos os carros do seu sistema:

http://localhost/cars

Quando você quer referenciar um carro em particular no seu sistema, você deve fornecer a seguinte URL:

http://localhost/cars/audi-a6/

Note como a URL ainda é muito lógica, e muito amigável em termos de SEO. Em termos de uso da lesma, isso fica a seu critério. A string audi-a6 acima pode ser um identificador único para um carro no seu sistema – digamos que você tenha um banco de dados relacional com os seguintes campos:

idcar_namecar_brandcar_unique_identifier

O campo car_unique_identifier seria então usado para armazenar os valores que são exibidos na lesma; no exemplo que especifiquei acima com um carro Audi A6, este é o local onde a sua string audi-a6 viveria.

Você pode usá-lo de outras formas também – por exemplo, se você tiver um controlador de posts que funcione como um blog. O título de uma página pode ser o slug para ela, se ela estiver com a URL codificada. Para o nosso artigo chamado “Melhores maneiras de fazer SEO melhor”, você pode fornecer a seguinte URL:

http://localhosts/posts/best-ways-to-make-seo-better

Você então rodaria url_decode() na lesma, e você obteria a string melhores maneiras de fazer seo melhor, que você pode usar para encontrar um post através do seu título.

Não precisa parar por aí – você pode decidir ter múltiplas lesmas para representar algo – vamos dar uma olhada em como a BBC está fazendo isso. Eu peguei um artigo aleatório de hoje, que tem a seguinte URL:

http://www.bbc.co.uk/news/world-africa-24506006

Este link para um artigo nomeado: A União Africana insta a ICC a desistir de casos contra líderes. A forma como a BBC está fazendo isso é que eles usam a última parte do slug world-africa-24506006, que é 24506006, para identificar uma entrada única em seu sistema. Eles então muito provavelmente usam world-africa para denotar a categoria a que um post pertence (embora isso possa ser apenas uma suposição, ainda é um palpite educado).

Finalmente, vamos imaginar a seguinte tabela DB, para artigos de pesquisa.

idcategorytitle

Você pode ter um exemplo que funciona como o que está abaixo.

http://localhost/papers

Esta URL representa todos os artigos de pesquisa atualmente no sistema. Você poderá então acessar todos os artigos de pesquisa sobre física através da seguinte lesma:

http://localhost/papers/physics

Nossa lesma é física, e nossa seleção de banco de dados atualmente se parece com:

SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'

Você poderá então expor a seguinte URL:

http://localhost/papers/physics/gravitation

Agora nossa lesma é composta de física e gravitação. Nossa consulta nos bastidores pode parecer algo como:

SELECT *FROM papersWHERE LOWER(papers.category) = 'physics'AND LOWER(papers.title) = 'gravitation'

Isso nos permite identificar uma entrada única em nosso sistema.

Então temos usado lesmas repetidamente para filtrar nossas informações. No exemplo, quando executamos a URL sem nenhuma lesma:

http://localhost/papers

Quisemos listar todos os trabalhos de pesquisa disponíveis. Quando corremos a URL com a lesma física:

http://localhost/papers/physics

Quisemos listar todos os artigos de pesquisa sobre física, estreitando assim os nossos resultados. Finalmente, quando fornecemos duas lesmas, pudemos identificar uma entrada única no nosso sistema.

http://localhost/papers/physics/gravitation

Podemos ter modelado isto de forma diferente? Claro que sim! Dependendo dos requisitos do nosso sistema, podemos normalizar e desnormalizar as nossas tabelas relacionais. Poderíamos ter tido um sistema de permalink no lugar, de modo que a nossa tabela de posts fosse assim:

 id title permalink

Poderíamos então ter tido a seguinte entrada:

 | 20013 | Gravitation | physics-gravitation-breakthrough |

Assim expondo a URL:

 http://localhost/papers/physics-gravitation-breakthrough

No exemplo acima, o slug physics-gravitation-breakthrough permite-nos identificar de forma única um post via:

 SELECT * FROM papers WHERE papers.permalink = physics-gravitation-breakthrough