senhorvip 0 Denunciar post Postado Julho 20, 2010 Eae galera, estou desenvolvendo um site e quando fui fazer o sitemap para enviar aos mecanismos de busca BUUUUUMM caí em desespero. Os arquivos XML não reconhecem o caractere "&" e na minha URL contém esse caractere, veja: "?p=empresa_ver&id=824" tentei substituir pelo & pelo & mas quando entro no endereço "?p=empresa_ver&id=824" aparece uma página em branco. então procurei saber mais sobre URL AMIGÁVEL. mas estou com um problema, veja: Criei meu arquivo .HTACCESS mas não funciona. minha URL hoje é assim: http://www.aondee.com.br/index/?p=empresa&id_categoria=252 http://www.aondee.com.br/index/?p=empresa_ver&id=824 fiz assim no arquivo .HTACCESS RewriteEngine On RewriteRule ^categoria/([0-9]+)/?$ /index.php?p=empresa&id_categoria=$1 RewriteRule ^empresa/([0-9]+)/?$ /index.php?p=empresa_ver&id=$1 deveria funcionar assim: http://www.aondee.com.br/index/empresa/824 mas dá erro. ME AJUDEM NESSE SUFOCO. Compartilhar este post Link para o post Compartilhar em outros sites
Amigo_zz 0 Denunciar post Postado Julho 20, 2010 Viva, Não sei como estás a criar o teu sitemap, mas se colocares os textos, links etc dentro da tag CDATA, já não terás esse problema: <guid><![CDATA[http://www.teusite.com/index.php?pag=detalhes&cod=5]]></guid>[/code] Abraço, Rui Costa Compartilhar este post Link para o post Compartilhar em outros sites
Rogério Y. 0 Denunciar post Postado Julho 20, 2010 Você está executando isso local? Se for local, verifica se esse host está liberando rescrita... aquela linha AllowOverride all se você não souber o que fazer, me diga qual erro está dando... esta no windows xampp? esta no linux? Compartilhar este post Link para o post Compartilhar em outros sites
senhorvip 0 Denunciar post Postado Julho 20, 2010 [Desulpe por ter duplicado... acho que foi alguma instabilidade no servidor] Você está executando isso local? Se for local, verifica se esse host está liberando rescrita... aquela linha AllowOverride all se você não souber o que fazer, me diga qual erro está dando... esta no windows xampp? esta no linux? Não, o site já está no servidor web. todas as configurações estão corretas, mas a url continua do mesmo jeito ?p=empresa&id=12.... www.aondee.com.br o erro é que não acontece nada. a url continua ?p=empresa&id=12.... Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Lithium 0 Denunciar post Postado Julho 20, 2010 O link deve ser chamado da forma amigavel, o htaccess não vai modificar o link pra você ele vai interpretar o link. Se você quer chamar a página de clientes passando id <a href="http://www.seusite.com.br/clientes/1">Cliente Lorem ipsum</a> Mas pelo jeito você continua chamando <a href="http://www.seusite.com.br/index.php?cliente=1">Cliente Lorem ipsum</a> Tente esse .htaccess Options +FollowSymLinks RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^categoria/([0-9]+)/?$ index.php?p=empresa&id_categoria=$1 RewriteRule ^empresa/([0-9]+)/?$ index.php?p=empresa_ver&id=$1 Compartilhar este post Link para o post Compartilhar em outros sites
Rogério Y. 0 Denunciar post Postado Julho 20, 2010 Pelo que eu percebi seu site roda dentro de um diretório chamado index certo? Você colocou o .htaccess nesse diretório, ou está mechendo no diretório raiz? pq fiz uns teste aqui e parece que está no raiz... se estiver no raiz mude para: RewriteRule ^index/categoria/([0-9]*)/?$ index/index.php?p=empresa&id_categoria=$1 RewriteRule ^index/empresa/([0-9]*)/?$ index/index.php?p=empresa_ver&id=$1 Ou crie um .htaccess dentro da pasta index, e deixe como está... Se não certo de nenhum jeito, escreve um texo qualquer nesse aquivo htaccess e salve... tente executar e veja se da erro 500... se não der, é pq não está lendo seu htaccess Compartilhar este post Link para o post Compartilhar em outros sites
senhorvip 0 Denunciar post Postado Julho 21, 2010 Sim, eu entendi, mas antes de mudar no site eu preciso ter eles funcionando. coloquei conforme você disse e continuou não funcionando, fiz o que o Rogério pediu, COLOCAR O INDEX antes de /categoria mas veja o que acontece agora. quando eu digito http://aondee.com.br/index/categoria/81 ele me retorna a página http://aondee.com.br/index/categoria/index que é erro. agora o meu arquivo está assim Options +FollowSymLinks RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^index/categoria/([0-9]+)/?$ index.php?p=empresa&id_categoria=$1 RewriteRule ^index/empresa/([0-9]+)/?$ index.php?p=empresa_ver&id=$1 mas como eu disse ele não reconhece a url http://aondee.com.br/index/categoria/81 Para vocês entenderem melhor, eu desenvolvi o site da seguinte maneira. dentro do diretório index existe uma index.php que conversa com a secoes.php que chama os arquivos que estão em ../secoes veja o meu secoes.php abaixo: <? if (strlen($_GET['p'])>0) { if (file_exists('../secoes/'.$_GET['p'].'.php')) { include('../secoes/'.$_GET['p'].'.php'); } else { switch($_GET["p"]) { default: include("../secoes/principal.php"); break; } } } else include("../secoes/principal.php"); ?> Assim eu sempre terei algo como ?p=contato ou ?p=noticia&id=20 etc... mas quero tornar isso como algo do tipo site.com/noticia/20 ou site.com/contato/ Compartilhar este post Link para o post Compartilhar em outros sites
Rogério Y. 0 Denunciar post Postado Julho 21, 2010 Você tem 1 htaccess na raiz? Tem algum script para redirecionar para index/ ? tipo, if(alguma coisa) header('Location: index/'); se possível mande o .htaccess que está na raiz... e se tiver algum no diretório index renomeio temporariamente... Compartilhar este post Link para o post Compartilhar em outros sites
Eduardo Januario 0 Denunciar post Postado Julho 21, 2010 para que esta configuração de rewrite do .htaccess funcione é necessário que o mod_write do apache esteja habilitado... Compartilhar este post Link para o post Compartilhar em outros sites
Rogério Y. 0 Denunciar post Postado Julho 21, 2010 Acredito que se não estivesse habilitado teria dado erro 500, pois ele não colocou <IfModule mod_rewrite.c> antes de RewriteEngine On Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Lithium 0 Denunciar post Postado Julho 21, 2010 Tente modificar no seu .htaccess: Options +FollowSymLinks RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^categoria/(.*)/$ index.php?p=empresa&id_categoria=$1 RewriteRule ^empresa/(.*)/$ index.php?p=empresa_ver&id=$1 Veja só como eu uso nos meus projetos o meu .htaccess está assim RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?pagina=$1 Eu tenho uma index.php que funciona como um Controle de navegação, então todas as páginas são setadas pra index.php Na index.php pra eu receber esses parametros: $url = explode('/', @$_GET['pagina']); $pagina = isset($url[0]) && !empty($url[0]) ? $url[0] : null; $subpagina = isset($url[1]) && !empty($url[1]) ? $url_friendly[1] : null; $params = isset($url[2]) && !empty($url[2]) ? $url_friendly[2] : null; Pois acontece o seguinte: Ex.: Se eu chamar o link http://www.meusite.com.br/empresa/historia/2 e receber isso no php, o valor de $_GET['pagina'] será "empresa/historia/2", então eu tenho que quebrar isso pra transformar nos parametros que preciso. Conforme código php acima a variável $pagina depois de tratado fica com o valor "empresa", $subpagina com o valor "historia" e $params com o valor 2... Compartilhar este post Link para o post Compartilhar em outros sites
senhorvip 0 Denunciar post Postado Julho 21, 2010 O mod_write do apache está habilitado sim. na raíz do site eu tenho um index com o script abaixo: <? header('Location: ./index',true); ?> o htaccess está na raíz. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Lithium 0 Denunciar post Postado Julho 21, 2010 senhorvip testa o htaccess como te falei agora acima.. Muda esse trecho ([0-9]+)/?$ Pra (.*)/$ Coloquei no post acima sobre quebrar a url... Compartilhar este post Link para o post Compartilhar em outros sites
senhorvip 0 Denunciar post Postado Julho 21, 2010 Thiago, minha index tb funciona como um controle de navegação, no meio dela eu inseri include ('secoes.php'); veja o script da minha secoes.php <? if (strlen($_GET['p'])>0) { if (file_exists('../secoes/'.$_GET['p'].'.php')) { include('../secoes/'.$_GET['p'].'.php'); } else { switch($_GET["p"]) { default: include("../secoes/principal.php"); break; } } } else include("../secoes/principal.php"); ?> Agora eu coloquei isso na minha .htaccess RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ ?p=$1 consigo acessar a página http://aondee.com.br/index/empresa/255 mas ele me retorna a index sem imagens e sem o meu CSS. que loucura... Compartilhar este post Link para o post Compartilhar em outros sites
Rogério Y. 0 Denunciar post Postado Julho 21, 2010 montei uma estrutura igual a sua aqui, e com esse htaccess que estou de mandando funciona... mas o htaccess tem que estar na raiz... e não dentro do dir index... e dentro do dir index não deve ter outro htaccesss Options +FollowSymLinks RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(empresa|categoria)/(.*)\.(jpg|jpeg|gif|png|css|js) index/$2.$3 RewriteRule ^categoria/([0-9]+)/?$ index/index.php?p=empresa&id_categoria=$1 RewriteRule ^empresa/([0-9]+)/?$ index/index.php?p=empresa_ver&id=$1 RewriteRule ^/?$ index/index.php diz se funciona... Compartilhar este post Link para o post Compartilhar em outros sites
Thiago Lithium 0 Denunciar post Postado Julho 21, 2010 Postei a solução para esse problema aqui: http://forum.imasters.com.br/index.php?/topic/402394-problema-com-urls-amigaveiveis/ O que acontece é que o servidor passa a interpretar os links como pastas... Se você está em meusite.com.br/empresa/historia, o servidor interpreta devido ao htaccess que você está no diretorio www/empresa/historia e como você chama o css imagens e js diretamente com o caminho fisico(<img src="imagens/imagem.jpg" />) quando ele estiver em uma página("diretorio") ele perde esse caminho fisico e não mostra nada.... O bug é: Se você estiver em meusite.com.br você deve usar "css/estilo.css", se você estiver em meusite.com.br/empresa você deveria usar "../css/estilo.css" Pra corrigir isso crio um path com o caminho das pastas que me dá o caminho relativo... // ao invés disso<img src="imagens/imagem.jpg" />// use isso<img src="<?php echo $_imagens_ ?>/imagem.jpg" />// o resultado do uso do path é <img src="http://www.meusite.com.br/imagens/imagem.jpg" />Veja o outro tópico que é a solução exata pro problema. Compartilhar este post Link para o post Compartilhar em outros sites
senhorvip 0 Denunciar post Postado Julho 21, 2010 montei uma estrutura igual a sua aqui, e com esse htaccess que estou de mandando funciona... mas o htaccess tem que estar na raiz... e não dentro do dir index... e dentro do dir index não deve ter outro htaccesss Options +FollowSymLinks RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(empresa|categoria)/(.*)\.(jpg|jpeg|gif|png|css|js) index/$2.$3 RewriteRule ^categoria/([0-9]+)/?$ index/index.php?p=empresa&id_categoria=$1 RewriteRule ^empresa/([0-9]+)/?$ index/index.php?p=empresa_ver&id=$1 RewriteRule ^/?$ index/index.php diz se funciona... Rogério, funcionou PERFEITAMENTE. Obrigado, agora vou arrumar todos os links. cara valeu mesmo, agora vou estudar mais sobre o assunto para sempre poder adaptar aos novos sites que eu desenvolver. veja o resultado: http://www.aondee.com.br/letra/a http://www.aondee.com.br/categoria/81 http://www.aondee.com.br/empresa/651 Compartilhar este post Link para o post Compartilhar em outros sites