Dúvida: URLs de categoria amigáveis

Um amigo me escreveu:

Ola Elcio,

vc tem algum tutorial de como reescrever a url para deixar mais amigável?

no momento eu tenho isso
http://www.meusite.com.br/index.php/category/produtos/produtos-especiais/

quero deixar assim:
http://www.meusite.com.br/produtos-especiais/

Muito bem, vamos lá. O primeiro passo é, se você não quer que as categorias apareçam uma dentro da outra, não usá-las de forma hierárquica no cadastro. Edite a categoria “produtos-especiais” e faça com que ela não seja mais filha de “produtos”. Isso deve deixar a URL dela assim:

http://www.meusite.com.br/index.php/category/produtos-especiais/

O passo seguinte é ir em “Configurações -> Links Permanentes” e configurar corretamente a estrutura de links permanentes, para retirar o “index.php” da URL. Escolha o formato que mais lhe agradar lá. Você vai precisar:

  1. Estar rodando Apache. Essa dica não vai funcionar em outro servidor web, a não ser que você acrescente uma boa dose de hacking.
  2. Ter o mod_rewrite habilitado no seu Apache.
  3. Que o PHP tenha permissão de escrita no arquivo .htaccess.

Tendo feito isso, a URL vai ficar:

http://www.meusite.com.br/category/produtos-especiais/

Por fim, você pode usar esse plugin: Top Level Categories. Ele consegue retirar aquele /category/ da URL, deixando o formato final da URL do jeito que você quer.

Boa sorte!

 

Servindo vídeos Ogg Teora com o Content Type correto

Semana passada participei de um curso sobre HTML5 ministrado pela w3c Brasil. Nesse curso o Elcio Ferreira foi o instrutor, eu fiquei com uma duvida e fiz uma pergunta para ele sobre a necessidade de incluir a extensão do arquivo na tag <video> para que o mesmo funcione no firefox. Ele me mostrou uma forma utilizando PHP mas infelizmente não consegui obter o codigo.

Os servidores web, quando servem um arquivo, enviam ao navegador a informação de tipo de conteúdo. O header enviado do servidor, para um arquivo Ogg Vorbis, deve ser:

Content-type: application/ogg

Se o servidor não enviar esse header, o vídeo não vai tocar no Firefox. O Apache sabe fazer sozinho, basta que esteja configurado para isso. No Ubuntu, por exemplo, ele já vem configurado para servir ogg.

A saída de scripts PHP é servida com outro tipo de conteúdo. Geralmente “text/html”. Se você serve seu vídeo do PHP, precisa enviar um header no início do script avisando o navegador que esse conteúdo é vídeo. Você pode fazer:

<?php
header('Content-type: application/ogg');
?>

Já se você serve os vídeos como arquivos estáticos, não deve usar PHP para processá-los só para que sejam servidor com o tipo correto. O jeito certo é configurar corretamente o servidor. Se for um hosting compartilhado, eu tentaria um chamado ao suporte pedindo para que configurem isso corretamente antes de fazer com PHP. Ou estudaria mudar de hosting 😉