Ir para o conteúdo
lordfokas

.htaccess mod_rewite: URLs 'flat'

Mensagens Recomendadas

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.

Editado por brunoais
Tópico movido de: PHP

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 ;)

Editado por lordfokas

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.