Salve amigos.
Hoje eu vou dar uma dica muito legal. Faz muito tempo que eu tentava, sem sucesso, utilizar o recurso URLs Limpas (clean urls) no meu localhost, mas eu nunca consegui. Até hoje.
Parte da culpa por nunca der dado certo era minha, e como eu já compartilhei em outro artigo a forma que eu utilizo para rodar minhas páginas localmente (criando um alias para uma pasta dentro da minha pasta pessoal), me senti na obrigação de compartilhar esta informação para "consertar" o que posso ter criado.
As urls limpas são um recurso desnecessário quando se está trabalhando localmente, mas é interessante ter esta possibilidade para pode ser realizar testes com uma agilidade maior.
É claro que eu estou considerando que você tem o Apache instalado e configurado no seu computador. Caso você não tenha, você pode seguir este tutorial.
O mod_rewrite é um módulo do Apache que permite que as urls possam ser re-escritas, através de uma regra escrita no arquivo .htaccess do site. Através do mod_rewrite eu posso, por exemplo, re-escrever as urls para que as extensões .html e .php para que não apareçam, ou mesmo posso re-escrever a url para que a extensão .php seja exibida como .asp. Mas ela é comumente utilizada para tornar as urls mais amigáveis e fáceis de se decorar (além de ajudar na indexação do site em mecanismos de busca).
O mod_rewrite já vem junto com o Apache, a única coisa que é necessário fazer é ativa-lo. Ele está armazenado na pasta /etc/apache2/mods-available/, para ativa-lo, bastar criar um link para o módulo dentro da pasta mods-enabled. Abra o terminal e digite:
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/
Agora, o próximo passo é dizer ao Apache que as diretrizes do .htaccess devem ser priorizadas sobre as diretrizes padrão. No terminal, digite:
sudo gedit /etc/apache2/sites-available/default
Agora procure por algo assim:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
</Directory>
Altere o valor de AllowOverride para All.
Agora será necessário reiniciar o Apache:
sudo /etc/init.d/apache2 reload
Ou, se você seguiu o meu tutorial, pode utilizar o comando:
sudo service apache2 restart
Pronto, em teoria, já está pronto, mas se você seguiu uma das minhas dicas neste tutorial, a de mapear a pasta do Apache para uma pasta dentro da sua pasta pessoal, o recurso de url limpas não irá funcionar.
Primeiro, vou dizer qual o motivo de mapear o Apache para fora do diretório padrão (que é /var/www). Você evita de espalhar arquivos pessoais por todo o sistemas, concentrando-os apenas na sua pasta pessoal. Assim você não corre o risco de, num eventual backup para formatação, você fazer cópia apenas da sua pasta home, e esquecer os arquivos na pasta www.
Só que, até onde consegui fazer, o recurso de URLs Limpas só funciona nos sites salvos dentro da pasta padrão.
Existe uma forma muito simples de resolver o problema e ainda usufruir das vantagens de manter seus arquivos dentro da sua home.
O primeiro passo é dar permissões de escrita para a pasta /var/www, com um simples comando de terminal:
sudo chmod 777 /var/www
Você também pode executar o Nautilus como root e mudar as permissões em modo gráfico, mas no terminal é bem mais rápido.
E para finalizar, crie um atalho para a pasta do site que você quer utilizar url limpas dentro da pasta /var/www. Este atalho pode ser feito facilmente abrindo dois Nautilus, um apontando para a pasta /var/www e outro aberto na pasta que contém a pasta do site.
Clique sobre a pasta do site e a arraste para a janela do Nautilus aberta em /var/www, utilizando o botão do meio do mouse (geralmente é o rollover). Ao soltar o botão, vai aparecer um menu de contexto. Você escolherá a opção Criar Link Aqui.
Pronto. Agora você já pode utilizar URL Limpas no seu localhost, e ainda vai poder manter seus arquivos seguros na sua pasta home. É só lembrar que sempre que você quiser utilizar o recurso localmente, você deve fazer um atalho para a pasta dentro da pasta /var/www.

Até a próxima.
copyright © Marcus VBP, Todos os direitos reservados
Permitida a cópia desde que citado a fonte. [Política de Privacidade]
Powered by Drupal CMS.
1. Nelson*
Valeu pelo post. Apanhei um bocado antes de ativar o recurso de url limpas. Li muita tralha inútil antes de chegar a seu post. Parabéns.
2. Daniel Docki*
Marcus, primeira vez visitanto seu blog e estou testando o drupal em minha maquina local, e estou tentando colocar URL Limpas, e antes de colocar URL Limpas, eu segui o seu tutorial de colocar a pasta /var/www/ em minha pasta pessoal que por acaso ficou assim /home/danie/.www/
mas depois fui tentar fazer essas URL Limpas, consegui ativar no drupal, só que quando vou entrar em algum link interno, por exemplo o taxonomy...ele fica assim ow...
Not Found
The requested URL /home/daniel/.www/drupal/admin/content/taxonomy was not found on this server.
Alguma coisa deve ter saido errado porque era para ele fazer assim
/daniel/drupal/admin/content/taxonomy
e não
/home/daniel/.www/drupal/admin/content/taxonomy
3. Daniel Docki*
Opa....re-lendo novamente o tutorial seu, consegui fazer...erra um erro meu....
Primeiro, quando era para editar o AllowOverride None e passar para AllowOverride All, eu editei a primeira linha que ele aparece, e depois eu fui ler em seu tutorial novamente e é a segunda...
E depois eu não entendia como criar o link esse, voltei e li novamente...e consegui....=D
4. Daniel Docki*
Ah e eu acho que está com algum bug seu site olha o erro que ele dá quando posto um comentario
* warning: Invalid argument supplied for foreach() in /home/.bonz/marcusvbp/marcusvbp/site/modules/node/node.module on line 521.
* warning: implode() [function.implode]: Bad arguments. in /home/.bonz/marcusvbp/marcusvbp/site/modules/node/node.module on line 525.
* user warning: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 query: SELECT n.nid, n.vid, n.type, n.status, n.created, n.changed, n.comment, n.promote, n.sticky, r.timestamp AS revision_timestamp, r.title, r.body, r.teaser, r.log, r.format, u.uid, u.name, u.picture, u.data FROM marcusvbp_node n INNER JOIN compartilhada_users u ON u.uid = n.uid INNER JOIN marcusvbp_node_revisions r ON r.vid = n.vid WHERE in /home/.bonz/marcusvbp/marcusvbp/site/includes/database.mysql.inc on line 172.
5. Marcus VBP
Oi Daniel. Fico feliz que o tutorial tenha funcionado :)
Eu estou ciente deste erro, só não tive tempo de resolvê-lo ainda. Mas obrigado por ter me avisado.
6. Bruno Wiltemburg*
Parabéns pelo seu artigo... Funcionou 100% para mim! Muito bom mesmo!
7. Rodrigo*
Ola alguem poderia fazer essa URL amigaveis no meu site?
www.sensualcontoseroticos.com
teria que ter o nome do titulo.html
alguem se dispoe?
Qual valor? aguardo retorno
8. Adriano*
Marcão, me diz uma coisa:
Eu uso o "$_SERVER['SERVER_NAME']" do php para pegar a url, funciona perfeito no domínio, mas quando ainda estou criando em localhost, ele só pega até localhost/, não pega o diretório que estou rodando o site (localhost/exemplo/).
Tudo sabe como fazer isso? Me parece ser tão simples!!!
9. Samuel*
EU USO EM MEU SITE A PLATAFORMA WORDPRESS MAS, EU CONHECI O DRUPAL E ESTOU TESTANDO NO MEU PC OU SEJA, LOCALMENTE, E GOSTEI MUITO DE TODAS AS DIFERENÇAS E POSSIBILIDADES QUE O DRUPAL APRESENTA EM RELAÇÃO COM O WORDPRESS, MAS ESTOU TENTANDO INSTALA-LO ONLINE E NÃO ESTOU CONSEGUINDO FAZER ESTE PROCESSO QUE VOCÊ ENSINA AQUI, POR QUE MEU SITE ESTÁ HOSPEDADO EM UM SERVIDOR AO QUAL EU NÃO TENHO ACESSO AOS ARQUIVOS DO APACHE, MAS DE QUALQUER FORMA EU FIZ UM PROCESSO PARECIDO NO WORDPRESS ONDE SÓ PRECISEI ALTERAR UM CÓDIGO NO ARQUIVO .HTACCESS E O RESTO FICOU POR CONTA DO SISTEMA, ENTÃO PODE MIM AJUDAR? POIS ESTOU PENSANDO EM MIGRAR MEU SITE PARA DRUPAL...
Enviar novo comentário