Ringeril 0 Denunciar post Postado Janeiro 17, 2009 Não consigo usar as urls amigaveis, já ativei o Rewrite no httpd do Apache e coloquei o .htaccess na raiz: .htaccess RewriteEngine on RewriteRule ^([a-z,0-9,A-Z,_-]+)$ /$0.php?$1=$2Quando entro por exemplo:http://localhost/artigos/id/20 Não funciona! Já tentei usar também: .htaccess RewriteEngine on RewriteRule artigos/(.*)$ artigos.php?id=$1 [L]Entrando em:http://localhost/artigos/20 E também não funciona! Como consigo fazer isso dar certo? ^^ Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Janeiro 17, 2009 Suas rules tem alguns erros. Rule1: 1 - A contagem dos 'blocos de match' começa em 1. 2 - /$0.php?$1=$2 não aponta para uma página e sim uma diretória dentro da atual. 3 - Só existe um 'bloco de match' na ER,no redirect você chama 3 blocos. Rule2: 2 - O inicio da er não foi delimitado (^). Dá uma estudada em ERs. A...e as rules agora: Rule1: RewriteRule ^([a-z]+)\/([a-z]+)\/(.*)$ $1.php?$2=$3 Rule2: RewriteRule ^artigos\/(.*)$ artigos.php?id=$1 Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Ringeril 0 Denunciar post Postado Janeiro 17, 2009 Obrigado eibon, suas explicações foram ótimas. Estou usando agora esse script para pegar o ultimo parametro, que seria o id e pesquisar no bd: $requestURI = explode('/', $_SERVER['REQUEST_URI']); $scriptName = explode('/', $_SERVER['SCRIPT_NAME']); $scriptNameArray = array_values($scriptName); for($i= 0; $i < sizeof($scriptNameArray); $i++) { if ($requestURI[$i] == $scriptName[$i]) { unset($requestURI[$i]); } } $command = array_values($requestURI);Mas a url fica dessa maneira:http://localhost/artigos.php/nid/20 Não tem como fazer a url ficar assim? http://localhost/artigos/nid/20 Abraço, desculpe o incomodo! Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Janeiro 17, 2009 Com uma rewriteRule é possivel sim.Você está fazendo de um jeito que é meio que gambiarra. Usa a rule ali que te passei...e acessa do jeito que você ta querendo. Compartilhar este post Link para o post Compartilhar em outros sites
Ringeril 0 Denunciar post Postado Janeiro 17, 2009 Ae eibon, não estou conseguindo acessar como dito, os scripts ficaram assim: .htaccess Options +FollowSymLinks RewriteEngine on RewriteRule ^([a-z]+)\/([a-z]+)\/(.*)$ $1.php?$2=$3artigos.php ........... $requestURI = explode('/', $_SERVER['REQUEST_URI']); $scriptName = explode('/', $_SERVER['SCRIPT_NAME']); $scriptNameArray = array_values($scriptName); for($i= 0; $i < sizeof($scriptNameArray); $i++) { if ($requestURI[$i] == $scriptName[$i]) { unset($requestURI[$i]); } } $command = array_values($requestURI); $id = $command[0]; $ver=mysql_query("SELECT * FROM noticias WHERE nid='$id'" ...........Tentei acessar:http://localhost/artigos/nid/21 ou http://localhost/artigos/21 ou http://localhost/artigos.php/nid/21 Não consegui. Tentei acessar: http://localhost/artigos.php/21 Consegui. Se não der ou não conseguir mudar, acho que já está bom. Agradecido! Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Janeiro 18, 2009 Não não. Mas ai você vai fazer: $id = $_GET['nid']; Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Ringeril 0 Denunciar post Postado Janeiro 18, 2009 Quando entro em: http://localhost/artigos/nid/21 Ele procura como pasta e não como o arquivo 'artigos.php'. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Janeiro 18, 2009 Engraçado...testei aqui e funcionou normal. .htaccess Options +FollowSymLinks RewriteEngine On RewriteRule ^([a-z]+)\/([a-z]+)\/(.*)$ $1.php?$2=$3 Url:http://189.123.170.131:8090/index/a/legal! index.php: <?php echo $_GET['a']; ?> Pode até testar...reveja o que você fez. Compartilhar este post Link para o post Compartilhar em outros sites
Ringeril 0 Denunciar post Postado Janeiro 18, 2009 Então seria alguma configuração do apache? mod_rewrite = ativado -------------------------- EDIT -------------------------- No apache eu tirei o # (comentario) do : LoadModule rewrite_module modules/mod_rewrite.so Mas agora vi em alguns tutoriais que tem essa linha também: AddModule mod_rewrite.c Mas não acho nela no httpd.conf e quando adiciono dá problema. O que devo fazer? Compartilhar este post Link para o post Compartilhar em outros sites
Ringeril 0 Denunciar post Postado Janeiro 19, 2009 Aee, consegui fazer funcionar!! O que eu fiz foi mudar as permissões de pasta: <Directory /> Options FollowSymLinks Indexes AllowOverride AuthConfig<Directory "outras pastas" /> Options Indexes FollowSymLinks AllowOverride All Ai deu certo. Abraço e obrigado! Compartilhar este post Link para o post Compartilhar em outros sites