MarVinOlivieraS 0 Denunciar post Postado Maio 14, 2012 já estou prestes a desistir, já segui todos os tutoriais q encontrei e dicas dadas e simplesmente não dá certo, existe mais alguma coisa q tem q ser instalado/habilitado no servidor para que funcione?? já estou achando q o problema é com meu apache. Compartilhar este post Link para o post Compartilhar em outros sites
MarVinOlivieraS 0 Denunciar post Postado Maio 18, 2012 consegui resolver o problema de página não encontrada habilitando o AllowOverride no apache porém ainda não consigo colocar a url amigável para funcionar. Compartilhar este post Link para o post Compartilhar em outros sites
leomarriel 7 Denunciar post Postado Maio 18, 2012 Calma lá amigo não diga isso!! Vamos lá.. Fiz um exemplo simples aqui, você está usando wamp? ou qual? o rewriterule já está ativado? Se não, ative. Se sim, prossiga.. index.php <?php $page = $_GET["page"]; if($page == 'principal') {$include = 'principal.php';} else if($page == 'noticia') {$include = 'noticia.php';} ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <p>Aqui é a página base "index.php" Esse texto entra em todas as páginas, aproveite e coloque um menu, topo e outras coisas que vão ser padrões em todo o site.</p> <p>Include para página abaixo:</p> <p> </p> <?php include($include); ?> </body> </html> principal.php Essa é a página principal noticia.php Principal que puxa outra página pelo GET:<br> <br> <?php $page_id = $_GET["id"].".php"; include($page_id); ?> hoje-e-dia-acaba.php Notícia Exemplo! Entendendo: Bom os dados para abrir as páginas serão resgatados via GET, confira abaixo o .htaccess .htaccess RewriteEngine On RewriteRule principal index.php?page=principal RewriteRule ^([^/]*)/([^/]*)$ index.php?page=$1&id=$2 Linha #1: Ligou o rewrite.. Linha #3: Indica o GET page para principal se este for a requisição. Linha #4: Rescreve a url: index.php?page=noticia&id=hoje-e-dia-acaba .. para: noticia/hoje-e-dia-acaba Bom, é lógico é a forma que fiz para busca a notícia é um exemplo, você utilizará a página notícia por exemplo para recuperar o id ou alias da notícia e busca no banco de dados. A página index é simples, ela simplesmente registra o GET da requisição da variável $page, e então define nos ifs a qual página tal variável pertence, dando assim o endereço de sua página, que é mostrada através do include.. Simples não? Qualquer mão ou dúvida, retorne.. abraço. Baixe o exemplo que fiz, e copie para qualquer pasta do seu servidor, e teste as duas url: /seuservidor/pastaqueesta/principal /seuservidor/pastaqueesta/noticia/hoje-e-dia-acaba Link: http://www.criartevix.com.br/externo/imasters/amigavel.rar Abraço Compartilhar este post Link para o post Compartilhar em outros sites
MarVinOlivieraS 0 Denunciar post Postado Maio 19, 2012 Calma lá amigo não diga isso!! Vamos lá.. Fiz um exemplo simples aqui, você está usando wamp? ou qual? o rewriterule já está ativado? Se não, ative. Se sim, prossiga.. index.php <?php $page = $_GET["page"]; if($page == 'principal') {$include = 'principal.php';} else if($page == 'noticia') {$include = 'noticia.php';} ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <p>Aqui é a página base "index.php" Esse texto entra em todas as páginas, aproveite e coloque um menu, topo e outras coisas que vão ser padrões em todo o site.</p> <p>Include para página abaixo:</p> <p> </p> <?php include($include); ?> </body> </html> principal.php Essa é a página principal noticia.php Principal que puxa outra página pelo GET:<br> <br> <?php $page_id = $_GET["id"].".php"; include($page_id); ?> hoje-e-dia-acaba.php Notícia Exemplo! Entendendo: Bom os dados para abrir as páginas serão resgatados via GET, confira abaixo o .htaccess .htaccess RewriteEngine On RewriteRule principal index.php?page=principal RewriteRule ^([^/]*)/([^/]*)$ index.php?page=$1&id=$2 Linha #1: Ligou o rewrite.. Linha #3: Indica o GET page para principal se este for a requisição. Linha #4: Rescreve a url: index.php?page=noticia&id=hoje-e-dia-acaba .. para: noticia/hoje-e-dia-acaba Bom, é lógico é a forma que fiz para busca a notícia é um exemplo, você utilizará a página notícia por exemplo para recuperar o id ou alias da notícia e busca no banco de dados. A página index é simples, ela simplesmente registra o GET da requisição da variável $page, e então define nos ifs a qual página tal variável pertence, dando assim o endereço de sua página, que é mostrada através do include.. Simples não? Qualquer mão ou dúvida, retorne.. abraço. Baixe o exemplo que fiz, e copie para qualquer pasta do seu servidor, e teste as duas url: /seuservidor/pastaqueesta/principal /seuservidor/pastaqueesta/noticia/hoje-e-dia-acaba Link: http://www.criartevix.com.br/externo/imasters/amigavel.rar Abraço muito obrigado pela atenção, aqui de fato funciona quando digito esses links porém quando digito somente http://localhost/ é apresentado um erro informando que falta um parametro seria possível carregar a página principal sem digitar mais nada?? e no caso de carregar arquivos que estão em um subdiretório como fazer? Compartilhar este post Link para o post Compartilhar em outros sites
leomarriel 7 Denunciar post Postado Maio 19, 2012 Que bom que funcionou amigo.. veja abaixo.. quando digito somente http://localhost/ é apresentado um erro informando que falta um parametro seria possível carregar a página principal sem digitar mais nada?? Amigo apenas modifique as primeiras linhas do index.php de: $page = $_GET["page"]; if($page == 'principal') {$include = 'principal.php';} Para: $page = @$_GET["page"]; if($page == 'principal' || empty($page)) {$include = 'principal.php';} e no caso de carregar arquivos que estão em um subdiretório como fazer? Para cada diretório que você tiver alguma página, coloque dentro do diretório o seguinte arquivo: .htaccess RewriteEngine off Qualquer coisa reporte.. rss Abraço.. Compartilhar este post Link para o post Compartilhar em outros sites
MarVinOlivieraS 0 Denunciar post Postado Maio 21, 2012 Que bom que funcionou amigo.. veja abaixo.. Amigo apenas modifique as primeiras linhas do index.php de: $page = $_GET["page"]; if($page == 'principal') {$include = 'principal.php';} Para: $page = @$_GET["page"]; if($page == 'principal' || empty($page)) {$include = 'principal.php';} Para cada diretório que você tiver alguma página, coloque dentro do diretório o seguinte arquivo: .htaccess RewriteEngine off Qualquer coisa reporte.. rss Abraço.. cara uma das poucas pessoas q me fizeram entender um pouco sobre esse assunto foi você, a partir da sua ajuda juntei as informações e aos poucos estou avançando, adaptei o seguinte código no index.php: <?php $pasta = @$_GET["pasta"]; $arquivo = @$_GET["arquivo"]; $idantes = @$_GET["idantes"]; if($pasta == 'home' || empty($pasta)) {$include = 'home.php';} elseif(file_exists("$pasta/$arquivo.php/$idantes")){ //Se o arquivo n for um diretorio inclui do contrario da erro is_file("$pasta/$arquivo.php") ? $include = "$pasta/$arquivo.php" : $include = "$pasta/$arquivo/$idantes.php"; //Verifica se o arquivo existe }elseif($pasta == "" && $arquivo == ""){ //Se o arquivo n for um diretorio inclui do contrario da erro include_once((is_file("$pasta.php")) ? "$pasta.php" : "$include = home.php"); }else{ //Do contrario mosta a pagina de erro include_once($include = '404.php'); } ?> <?php include($include); ?> e o .htaccess: RewriteEngine On RewriteRule home index.php?pasta=home RewriteRule ^([^/]*)/([^/]*)$ index.php?pasta=$1&arquivo=$2&idantes=$3 em partes isso deu certo, pq quando digito "localhost/noticias/ler" ele acessa o arquivo ler.php direitinho porém quando insiro o terceito parametro $idantes ele dá arquivo não encontrado, o q pode estar errado?? Compartilhar este post Link para o post Compartilhar em outros sites
leomarriel 7 Denunciar post Postado Maio 21, 2012 Bom dia meu brother.. que bom que estamos progredindo.. Sinceramente não saquei ainda sua real intenção, porém compreendi um pouco segue modificações com base em seu código. index.php <?php $pasta = @$_GET["pasta"]; $arquivo = @$_GET["arquivo"]; if($pasta == 'home' || empty($pasta)) {$include = 'home.php';} elseif(file_exists("$pasta/$arquivo.php")){ //Se o arquivo n for um diretorio inclui do contrario da erro is_file("$pasta/$arquivo.php") ? $include = "$pasta/$arquivo.php" : $include = "$pasta/$arquivo"; //Verifica se o arquivo existe }elseif($pasta == "" && $arquivo == ""){ //Se o arquivo n for um diretorio inclui do contrario da erro include_once((is_file("$pasta.php")) ? "$pasta.php" : "$include = home.php"); }else{ //Do contrario mosta a pagina de erro include_once($include = '404.php'); } ?> <?php include($include); ?> Comentários do index.php Você estava tentando recuperar o get "idantes" nesta página para usar no ler.php? se sim, fez errado. Recupere o get no ler.php. Veja abaixo: ler.php teste <?php echo $_GET["idantes"]; ?> Agora da uma sacada no .htaccess .. aqui está o segredo.. der repente pode te ajudar no script que você está tentando fazer. .htaccess RewriteEngine On RewriteRule home index.php?pasta=home RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ index.php?pasta=$1&arquivo=$2&idantes=$3 Percebe a alteração? Veja que você atribuiu um novo parâmetro na url, sendo assim o htacces tem de acompanhar.. veja como o servidor interpreta: Isso é uma regra, escreva "$1valor/$2valor/$3valor" com base na url: index.php?pasta=$1&arquivo=$2&idantes=$3 Ou seja, se você quiser adicionar um novo parâmetro segue a mesma lógica que você começou, você só esqueceu de adicionar na regra a esquerda.. RewriteEngine On RewriteRule home index.php?pasta=home RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ index.php?pasta=$1&arquivo=$2&idantes=$3&antigas=$4 Por exemplo... Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
MarVinOlivieraS 0 Denunciar post Postado Maio 21, 2012 isso me ajudou muito, principalmente a parte do .htaccess. deixa eu te explicar qual a estrutura do meu projeto talvez assim você entenda: index.php home.php /admin /img /css /noticias index.php ler.php /css /layout /entretenimento index.php ler.php /css /layout não sei se ficou claro, mas vou explicar: no index (meusite.com) haverão links que direcionarão por exemplo para uma notícia e de acordo com a categoria dessa notícia ela será aberta em um ler.php diferente com um design diferente e cada categoria tem um index.php também q exibirá somente as notícias daquela categoria também com um layout diferente. Está bagunçado??? Compartilhar este post Link para o post Compartilhar em outros sites
leomarriel 7 Denunciar post Postado Maio 21, 2012 Agora eu entendi meu brother.. Pois bem, porque não coloca tudo na mesma página noticias.php ? Para alterar o layout faz assim.. Na página noticia coloca um if, que dependendo da categoria seleciona uma página especifica.. ex: Dentro da pasta noticias (ou nem precisa de pasta), tem uma outra pasta: "layout/" que terá os arquivos: entretenimento.php diversas.php mudiais.php brasil.php Então, sabendo que cada uma destas pastas terão suas respectivas categorias, usamos o if para indicarmos qual página puxar.. nos meus projetos joomla, uso direto isso.. ex. index.php <?php $pasta = @$_GET["pasta"]; $arquivo = @$_GET["arquivo"]; if($pasta == 'home' || empty($pasta)) {$include = 'home.php';} elseif($pasta == 'noticias'){$include = "noticias.php";} ?> <?php include($include); ?> noticias.php <?php $categoria = $_GET["arquivo"]; // de acordo com a categoria puxa a respectiva página if($categoria == 'entretenimento') {$layout = "layout/entretenimento.php";} elseif($categoria == 'diversas') {$layout = "layout/diversas.php";} elseif($categoria == 'mundiais') {$layout = "layout/mundiais.php";} elseif($categoria == 'brasil') {$layout = "layout/brasil.php";} else {$layout = "layout/padrao.php";} // caso a categoria não tenha uma página específica include($layout); // mostra o layout da categoria ?> layout/entretenimento.php <?php $id = $_GET["idantes"]; // aqui vai codigo para busca noticia através do id e as opções de página do entretenimento ?> Ou, se os layouts para as páginas forem iguais e só mudarem as cores, o melhor é fazer um layout padrão e só alterar entre os estilos... ex.. noticias.php <?php $categoria = $_GET["arquivo"]; // de acordo com a categoria puxa a respectiva css if($categoria == 'entretenimento') {$layout = "layout/entretenimento.css";} elseif($categoria == 'diversas') {$layout = "layout/diversas.css";} elseif($categoria == 'mundiais') {$layout = "layout/mundiais.css";} elseif($categoria == 'brasil') {$layout = "layout/brasil.css";} else {$layout = "layout/padrao.css";} // caso a categoria não tenha uma página específica ?> <link rel="stylesheet" href="<?php echo $layout;?>" type="text/css" media="screen" /> Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
MarVinOlivieraS 0 Denunciar post Postado Maio 22, 2012 estava pensando exatamente sobre isso ontem antes de ler sua postagem e já estava montando em minha cabeça uma forma de retirar o diretório da url e assim diminuir o tamanho dela então fiz o seguinte: ler.php: <?php require('/admin/noticiasbd.php'); ?> <?php $arquivo = @$_GET[arquivo]; $idantes = @$_GET[idantes]; $id = addslashes($idantes); $sql = "SELECT id, titulo, resumo, noticia, categoria, imagem, data, keywords FROM $tabela WHERE ver = '1' AND id = '$id'"; $resultado = mysql_query($sql) or die ("Não foi possível realizar a consulta ao banco de dados"); while ($linha=mysql_fetch_array($resultado)) { $id= $linha["id"]; $titulo= $linha["titulo"]; $resumo= $linha["resumo"]; $noticia= $linha["noticia"]; $data= $linha["data"]; $imagem= $linha["imagem"]; $keywords= $linha["keywords"]; $categoria = $linha["categoria"]; include($categoria."ler.php"); ?> assim ele carrega o arquivo com o nome categorialer.php (por exemplo noticiasler.php) em que eu encerro o whille montando a página e carregando o .css, certo?? no htaccess quero editá-lo para aceitar o título como primeiro parâmetro, mas acredito q ele não seja a melhor opção para usar no select no banco de dados então passaria o idantes também e então a url ficaria assim meusite.com/titulo/arquivo/id, essa é a melhor opção? o q deveria ser mudado no htaccess?? Compartilhar este post Link para o post Compartilhar em outros sites
leomarriel 7 Denunciar post Postado Maio 22, 2012 essa é a melhor opção? Tudo depende de como será o layout das categorias, o que vai mudar por exemplo de layout para layout? Disposição dos elementos? Cores? Colunas? Se somente for cores, não é preciso criar uma página para cada categoria, somente alterar o css, de acordo com a categoria vinda pelo get da url. Então você teria somente uma página para mostrar as notícias, porém mudaria cores e outras coisas pelo css. para aceitar o título como primeiro parâmetro, mas acredito q ele não seja a melhor opção para usar no select no banco de dados Correto, sem contar que você teria uma dor de cabeça enorme, pois um título: Assim: Notícia Teste com Espaço e Acentuação. A URL lê, assim: Not%C3%ADcia%20Teste%20com%20Espa%C3%A7o%20e%20Acentua%C3%A7%C3%A3o. A não ser que tenha um alias para cada notícia. Por ex: noticia-teste-com-espaco-e-acentuacao .. Isso definido já no banco de dados. Veja direitinho o exemplo que te passei, ainda acho ser o mais indicado, porém, responda as perguntas do início.. o que vai mudar por exemplo de layout para layout? Disposição dos elementos? Cores? Colunas? Para lhe ajudarmos melhor.. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
MarVinOlivieraS 0 Denunciar post Postado Maio 22, 2012 haverão algumas partes do layout q serão diferentes além do css, por isso quero chamar arquivos diferentes. Fiz uns testes aqui e está funcionando, porém ainda não encontrei uma forma de na minha home e futuramente no sitemap inserir o título na url para fins de optimização SEO e ficar como você postou "noticia-teste-com-espaco-e-acentuacao", mas quando digito http://localhost/titulo/ler/15 dá tudo certo e a página ler é carregada e carrega a página "ler".$categoria.".php" Compartilhar este post Link para o post Compartilhar em outros sites
MarVinOlivieraS 0 Denunciar post Postado Maio 23, 2012 depois de muito pesquisar encontrei essa função: <?php function remover($str, $enc = "UTF-8"){ $acentos = array( 'A' => '/À|Á|Â|Ã|Ä|Å/', 'a' => '/à|á|â|ã|ä|å/', 'C' => '/Ç/', 'c' => '/ç/', 'E' => '/È|É|Ê|Ë/', 'e' => '/è|é|ê|ë/', 'I' => '/Ì|Í|Î|Ï/', 'i' => '/ì|í|î|ï/', 'N' => '/Ñ/', 'n' => '/ñ/', 'O' => '/Ò|Ó|Ô|Õ|Ö/', 'o' => '/ò|ó|ô|õ|ö/', 'U' => '/Ù|Ú|Û|Ü/', 'u' => '/ù|ú|û|ü/', 'Y' => '/Ý/', 'y' => '/ý|ÿ/', 'a.' => '/ª/', 'o.' => '/º/'); return preg_replace($acentos, array_keys($acentos), htmlentities($str,ENT_NOQUOTES, $enc)); } ?> mas pelo q percebi ela não faz a mudança do espaço vazio pelo "-" e também não sei como e onde colocar essa função. Compartilhar este post Link para o post Compartilhar em outros sites
leomarriel 7 Denunciar post Postado Maio 23, 2012 Bom adaptei o código de uma forma porca más adaptei para você tentar trabalhar com ele... <?php function remover($str, $enc = "UTF-8"){ $acentos = array( '-' => '/ /', 'a' => '/À|Á|Â|Ã|Ä|Å|à|á|â|ã|ä|å|A/', 'b' => '/B/', 'c' => '/Ç|ç|C/', 'd' => '/D/', 'e' => '/È|É|Ê|Ë|è|é|ê|ë|E/', 'f' => '/F/', 'g' => '/G/', 'h' => '/H/', 'i' => '/Ì|Í|Î|Ï|ì|í|î|ï|I/', 'j' => '/J/', 'k' => '/K/', 'l' => '/L/', 'm' => '/M/', 'n' => '/Ñ|ñ|N/', 'o' => '/Ò|Ó|Ô|Õ|Ö|ò|ó|ô|õ|ö|O/', 'p' => '/P/', 'q' => '/Q/', 'r' => '/R/', 's' => '/S/', 't' => '/T/', 'u' => '/Ù|Ú|Û|Ü|ù|ú|û|ü|U/', 'v' => '/V/', 'w' => '/W/', 'x' => '/X/', 'y' => '/Ý|ý|ÿ|Y/', 'z' => '/Z/', 'a.' => '/ª/', 'o.' => '/º/'); return preg_replace($acentos, array_keys($acentos), htmlentities($str,ENT_NOQUOTES, $enc)); } $titulo = "Os grandes Cabelos da Rapunzel é Azul"; echo remover($titulo); // ou coloque em uma váriavel: $variavel = remover($titulo); ?> Onde $titulo é no caso o seu título (Oh, Sério? Não diga..), que você poderá buscar do banco ou da cadeira como preferir, e trabalhar com seu retorno, colocando em uma variável ou não, para fazer o que quiser com ela.. Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
MarVinOlivieraS 0 Denunciar post Postado Maio 23, 2012 valeu pela auda mas aqui a página retorna em branco quando tento testar o código. Compartilhar este post Link para o post Compartilhar em outros sites
leomarriel 7 Denunciar post Postado Maio 23, 2012 valeu pela auda mas aqui a página retorna em branco quando tento testar o código. Aqui funcionou perfeitamente, tente testar somente o código que lhe passei acima em uma nova página. Estranho. Compartilhar este post Link para o post Compartilhar em outros sites
MarVinOlivieraS 0 Denunciar post Postado Maio 30, 2012 vai entender, até a hora do almoço não carregava agora a tarte funcionou, só não substitui as virgulas e interrogações isso pode ser ruim??? ababei decidindo por subsituir as virgulas e as ?, para isso acrescentei essas duas linhas: '' => '/,/', '' => '/[+?]/', o mais difícil foi substituir a interrogação pq eu gastei várias horas procurando a forma correta e depois de vários artigos lidos achei um em q indicava para colocar entre colchetes e com o +. A função ficou assim: <?php function remover($str, $enc = "iso-8859-1"){ $acentos = array( '' => '/,|[+?]/', '-' => '/ /', 'a' => '/À|Á|Â|Ã|Ä|Å|à|á|â|ã|ä|å|A/', 'b' => '/B/', 'c' => '/Ç|ç|C/', 'd' => '/D/', 'e' => '/È|É|Ê|Ë|è|é|ê|ë|E/', 'f' => '/F/', 'g' => '/G/', 'h' => '/H/', 'i' => '/Ì|Í|Î|Ï|ì|í|î|ï|I/', 'j' => '/J/', 'k' => '/K/', 'l' => '/L/', 'm' => '/M/', 'n' => '/Ñ|ñ|N/', 'o' => '/Ò|Ó|Ô|Õ|Ö|ò|ó|ô|õ|ö|O/', 'p' => '/P/', 'q' => '/Q/', 'r' => '/R/', 's' => '/S/', 't' => '/T/', 'u' => '/Ù|Ú|Û|Ü|ù|ú|û|ü|U/', 'v' => '/V/', 'w' => '/W/', 'x' => '/X/', 'y' => '/Ý|ý|ÿ|Y/', 'z' => '/Z/', 'a.' => '/ª/', 'o.' => '/º/'); return preg_replace($acentos, array_keys($acentos), htmlentities($str,ENT_NOQUOTES, $enc)); } ?> ------------------------------ estou de volta, incrementei no meu .htaccess uma linha para remover o www. da url aí ele ficou assim: RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*) RewriteRule (.*) http://%1/$1 [R=301,L] RewriteRule home index.php?titulo=home RewriteRule news index.php?titulo=news RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ index.php?titulo=$1&arquivo=$2&idantes=$3 uma outra dúvida q tenho é: como evitar conteúdo duplicado?? pq notei q se eu digitar localhost/home.php e localhost/home ou só localhost ele abre o conteúdo e gostaria q ficasse apenas localhost, é possível? Compartilhar este post Link para o post Compartilhar em outros sites