falcao544 11 Denunciar post Postado Julho 1, 2010 Pessoal tá certo esse meu .htaccess? RewriteEngine on RewriteBase /htdocs RewriteRule ^([a-z,0-9,A-Z,_-]+)$ index.html?id=$1 [R=301] Porque tá dando erro(404)! Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 1, 2010 Coloca uma barra depois de htdocs (que deve ser um caminho válido para o servidor - diretório ou alias) e remove a flag de regra no final. Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Julho 1, 2010 RewriteEngine on RewriteBase /htdocs RewriteRule ^([a-z,0-9,A-Z,_-]+)$ index.html?id=$1 [R=301] Qual o objetivo desse .htaccess, @falcao544 ? Detalhe, quando for colocar alguma coisa no RewriteBase, pense que é a partir do seu DocumentRoot. Então, se seu DocumentRoot tem o valor /var/www/html e você coloca o RewriteBase como /htdocs o Apache vai procurar /var/www/html/htdocs/index.html Na regra, você está dizendo que qualquer coisa que contenha entre a-z (maiúsculo ou minúsculo), virgulas (não precisa delas para separar os intervalos), mais um underline e um hífen repetidos 1 ou mais vezes serão REDIRECIONADOS com HTTP 301 para index.html que está em $DocumentRoot/htdocs/index.html É isso que você quer fazer ? Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Julho 1, 2010 Acho que o problema é esse RewriteBase! Eu coloquei ele porque ontém eu entrei no chat do hospedador(que é free) e o pessoal disse para eu usar RewriteBase! Evandro essa flag é essa aqui? [R=301] Se for eu queria deixar ela por enquanto so para mudar a URL lá em cima! Foi o Julio que falou para eu usar R=301! Olhe esse tópico: http://forum.imasters.com.br/index.php?app=forums&module=forums§ion=findpost&pid=1563204 Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 1, 2010 Se quiser mesmo mudar a URL, deixe, mas aí entramos em questões de SEO. Se for MESMO por enquanto ok. Se a solução for ficar em definitivo, sugiro o cabeçalho 302. Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Julho 1, 2010 Evandro tentei esse código mas não funcionou! RewriteEngine on RewriteRule ^([a-z,0-9,A-Z,_-]+)$ index.html?id=$1 [R=302] Erro 404 denovo! Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 1, 2010 Querido, provavelmente index.html não existe. Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Julho 1, 2010 Desculpa querido mas EXISTE sim! Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 1, 2010 Bom, vamos fazer alguns testes rápidos. Pesquisando por cima vi que soluções com redirecionamento puro de headers HTTP antendem melhor à necessidade que você está passando. Primeiramente crie um arquivo chamado teste.php com o seguinte conteúdo <?php echo '<pre>'; print_r($_GET); echo '</pre>'; Agora no .htaccess, deixe assim: RewriteEngine on RewriteRule ^(.*)$ teste.php?regra=$1 Teste com "seudominio.com/teste" Agora vamos trocar a expressão regular de forma que ela só tenha validade para o que nos interessa: RewriteRule ^([\w\d_-])$ teste.php?regra=$1 Teste novamente com as regras que devem passar e com as que não devem, para verificar a integridade da REGEX. Agora uma teste.html temporária para verificar se ela está recebendo os parâmetros corretamente: RewriteRule ^([\w\d_-])$ teste.html?id=$1 <script type="text/javascript">window.onload = function(){ alert(window.href.location); }</script> Após verificado, adicione a flag e retorne a sua index.html correta RewriteEngine on RewriteRule ^([\w\d_-])$ index.html?id=$1 [R=301] Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Julho 2, 2010 Primeiro teste com: Primeiramente crie um arquivo chamado teste.php com o seguinte conteúdo <?php echo '<pre>'; print_r($_GET); echo '</pre>'; Agora no .htaccess, deixe assim: RewriteEngine on RewriteRule ^(.*)$ teste.php?regra=$1 Teste com "seudominio.com/teste" NOTA: Mesmo que eu não digitasse nada depois do .org/ dava o erro abaixo! E se eu digitasse alguma coisa(teste) dava também o mesmo erro! Erro 500! Página do erro: http://hosting.zymic.com/500/ Erro: 500 Internal Service Error You have reached this page due to a malfunctioning .htaccess file. This may be caused by one of two things: Your .htaccess may not conform with the strict htaccess policy of Zymic, to fix this automatically, please click here If the first option does not work, please drop by Zymic IRC and we will assist you in fixing it. Segundo teste com: Agora vamos trocar a expressão regular de forma que ela só tenha validade para o que nos interessa: RewriteRule ^([\w\d_-])$ teste.php?regra=$1 Teste novamente com as regras que devem passar e com as que não devem, para verificar a integridade da REGEX. Nota: Eu coloquei RewriteEngine on no arquivo .htaccess! Usando depois do .org o teste, ou seja meusite.org/teste dava o erro 404! Page not found! Página do erro: http://hosting.zymic.com/404/ Erro: 404 Page Not Found! The address you have entered has not been found. This may be due to an outdated link, typo or a page no longer on our system. This website is hosted freely by Zymic Free Web Hosting. Our free web hosting comes with PHP, MySQL, FTP, and a web based control panel. But best of all, AD-FREE! Terceiro Teste com: Agora uma teste.html temporária para verificar se ela está recebendo os parâmetros corretamente: RewriteRule ^([\w\d_-])$ teste.html?id=$1 <script type="text/javascript">window.onload = function(){ alert(window.href.location); }</script> Nota: Eu coloquei RewriteEngine on Digitei meusite.org/teste Página do erro: http://hosting.zymic.com/404/ Erro: 404 Page Not Found! The address you have entered has not been found. This may be due to an outdated link, typo or a page no longer on our system. This website is hosted freely by Zymic Free Web Hosting. Our free web hosting comes with PHP, MySQL, FTP, and a web based control panel. But best of all, AD-FREE! Quarto teste com: Não entendi essa "flag": Após verificado, adicione a flag e retorne a sua index.html correta RewriteEngine on RewriteRule ^([\w\d_-])$ index.html?id=$1 [R=301] Usei www.meusite.org/teste Mas mesmo assim deu o erro 404! Se quiser fazer testes: www.guerrasmedievais.zzl.org Dps eu te passo a senha se quiser! Ou adiciona no msn eu vou alterando os arquivos enquanto você tenta! Outra coisa! Todos os arquivos utilizados no teste estavam nessa pasta: /www/zzl.org/g/u/e/guerrasmedievais/htdocs/ Obrigado, Vitor! Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 2, 2010 Flag é o conteúdo que vem dentro dos [colchetes] Creio que seu sistema não esteja com suporte a RewriteEngine habilitado. Entre em contato com o suporte para confirmar a possibilidade. Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Julho 2, 2010 Não tem suporte XD pois eu to usando um FREE Host! O zymic.com! Eu já fui no IRC deles e disseram que eles tem suporte! E o erro 500 confirma isso! Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 2, 2010 Pode ter suporte a .htaccess mas não a rewriteengine. Se você escrever qualquer coisa sem nexo nem sentido não comentado no .htaccess vai gerar o erro 500 Todos os testes realizados localmente apresentaram resultados satisfatórios dentro do previsto. Compartilhar este post Link para o post Compartilhar em outros sites