Jump to content
lordfokas

.htaccess mod_rewite: URLs 'flat'

Recommended Posts

lordfokas

Antes de mais, tenho a consciência que este não é o lugar perfeito para colocar questões deste género, mas à falta de melhor sitio para colocar uma questão acerca da configuração do Apache, e visto que isto depois vai acabar por ser processado por PHP, resolvi-me a deixar a questão aqui. Se for necessário, movam-me o tópico para um lugar mais propriado.

Eu tenho bastante experiência com PHP, mas enfim, não me vou gabar. No geral tenho a certeza do que estou a fazer, e não sou apenas mais um à procura de alguém que lhe faça o trabalho da escola.

Tendo isto dito, passemos então à questão:

Estou a desenvolver um website para uma oficina, que vende peças em segunda mão. É possível filtrar os resultados da base de dados pela categoria e pelas etiquetas (tags) do artigo.

Como daria um aspecto mais profissional ter 'flat links', os meus links estão neste formato: dominio.tld/?a/b/c/f/k/q, mas mesmo assim não tem aquele aspecto.

Eu tentei usar o mod_rewrite, mas não pesco nada daquilo, e o pouco que mexi nos ficheiros .htaccess foi com tutoriais ao lado, preciso de alguma orientação.

O meu objectivo é ter um URL do género loja.com/Artigos/Categoria/Motor/Etiqueta/B18 ser transformado em loja.com/?Artigos/Categoria/Motor/Etiqueta/B18

Eu poderia muito bem por cada valor no $_GET, mas os links na verdade são um pouco mais complexos que isto (a ordem, tamanho, quantidade e tipo dos argumentos é variavel), pelo que prefiro processar a query string no PHP. Estou até a considerar alterar os links para uma coisa com um pouco mais de sentido, como loja.com/Artigos/Categoria:Motor/Etiqueta:B18. Mas isso não faz diferença para a questão.

Sei que é relativamente simples fazer uma alteração deste género, mas eu tenho uma restrição:

Todos os meus recursos são guardados algures na pasta resources. Por exemplo, resources/css/ ou resources/js. Esse tipo de pedidos deve ser ignorado.

Eu queria fazer isto por mim, mas as minhas capacidades para regex não são do melhor, e atrofiei um bocado com o assunto.

Resumindo: Para todos os caminhos que não comecem com 'resources', redireccionar para o ficheiro index.php com o caminho pedido na query string.

Se alguém me pudesse ajudar com isto, seria bom. Não é uma coisa essencial, mas o aspecto conta.

Desde já obrigado.

Edited by brunoais
Tópico movido de: PHP

Share this post


Link to post
Share on other sites
yoda

Eu resolveria isso com um sistema em PHP que soubesse identificar parte dos argumentos iniciais como indicadores do que fazer com o request (que é o que todas as frameworks de PHP fazem hoje em dia). Se por exemplo o primeiro parâmetro do uri for uma classe e o segundo parâmetro do uri dor uma função dessa classe, ficas com uma melhor orientação. Tenho código feito para exemplificar este processo, se quiseres é só dizer.

Quanto ao htaccess, existem uns pela net fáceis de entender e funcionais na maioria dos servidores, exemplo:

RewriteEngine On
RewriteBase /


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule .* index.php/$0 [PT]

Outra coisa, não sei se é mesmo assim que queres, mas não precisas de ter o "?" no uri, podes usar a estrutura que quiseres (mesmo sem ele) e funciona na mesma.

Share this post


Link to post
Share on other sites
lordfokas

Eu andei a experimentar, e consegui um quase sucesso, no meio de uma carrada de internal server errors e afins.

Mas esta alteração ao URL tem alguns problemas, nomeadamente, como todos os URIs para a pasta resources são caminhos relativos, isso iria fazer com que o browser fizesse pedidos em subpastas que nao existem.

É um problema que posso resolver facilmente quando o site estiver acabado e no servidor, usando um subdominio apenas para os recursos, e caminhos absolutos para tudo.

Já agora, este tipo de alteração tem algum tipo de impacto a nivel de SEO?

O cliente é uma pessoa com quem me dou, e ter SEO em condições poderia aumentar o sucesso do site, que é bom para o negócio, e é um negócio no qual tenho interesse genuino. E para dizer a verdade, um site deste género tem bastantes problemas desse tipo, porque ordenar e pesquisar conteudo faz com que o mesmo conteudo apareça varias vezes em URLs diferentes, o que é mau para o Page Rank.

Acho que o melhor por agora é concluir o site, e aplicar as optimizações que forem possiveis no final. Até lá, pode ser que tenha uma epifania e perceba como lidar com esses problemas conceptuais todos...

Obrigado pela ajuda ;)

Edited by lordfokas

Share this post


Link to post
Share on other sites
yoda

Acho que estás a tentar reinventar a roda e umas horas de leitura pela web apagavam muitas dessas dúvidas.

O htaccess que te mostrei sabe lidar com os ficheiros se é isso que lhe estás a pedir, só vai tratar o uri como "não-ficheiro" se ele não existir, não é preciso ter subdominios para esses ficheiros públicos.

A nível de SEO funciona bem desde que evites usar mais que um uri diferente para apresentar a mesma informação.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.