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!
Enviar novo comentário