ebotega 2 Denunciar post Postado Junho 23, 2013 Estou vendo algumas coisas sobre urls amigáveis e surgiu uma dúvida sobre como ficam os links das páinas. Vamos a dúvida: A partir desse vídeo ví que podemos fazer 'www.meusite.com.br/produtos' e ele direciona para a página produtos.php, ok; se eu informar 'www.meusite.com.br/produtos/12' busca-se o produto 12, ok; contudo se nessa página 'produtos' eu tiver um link para 'clientes' por exemplo, o link fica 'www.meusite.com.br/produtos/clientes' e deveria ficar 'www.meusite.com.br/clientes', ou seja, ele encara produtos como um diretório, se eu tiver 'www.meusite.com.br/produtos/12/a/b/c', clientes ficará 'www.meusite.com.br/produtos/12/a/b/clientes'. Se eu trabalhar com hífen (-) funciona, 'www.meusite.com.br/produtos-12', aí ele não encara 'produtos' como um diretório, mas gostaria de saber como trato a barra. Como informo nos links onde eu quero ir? Já tentei com $_SERVER['DOCUMENT_ROOT'] e $_SERVER['HTTP_HOST'], porém o link fica 'www.meusite.com.br/produtos/www.meusite.com.br/produtos/clientes'. Espero que tenha ficado um pouco clara a dúvida... Valeu. Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 23, 2013 Não inclua valores das super-globais ($_SERVER, etc.) em seus endereços (URL). Você pode usar URL absoluta ou relativos. Uma URL absoluta é a que contém o endereço completo da página, exemplo: [inline]http://www.meusite.com.br/clientes[/inline] Já a URL relativa, contém apenas o caminho ou URI: [inline]/clientes[/inline] Se o servidor estiver configurado corretamente, as duas maneiras de escrever a URL acima devem funcionar da mesma forma. É mais recomendável, em termos de SEO, usar sempre a URL absoluta. Se você tiver um certificado TLS/SSL instalado, convém usar URLs independentes de protocolo, colocando apenas [inline]//[/inline]. Os seus problemas devem ser devidos a má configuração das reescritas de URL, mas não é possível dizer exatamente o que está errado sem ver as suas condições e regras de reescrita (RewriteCond e RewriteRule, no Apache). Compartilhar este post Link para o post Compartilhar em outros sites
ebotega 2 Denunciar post Postado Junho 23, 2013 ok, você diz eu colocar nos links o endereço do site mesmo isso? <a href="http://www.meusite.com.br/clientes">clientes</a> Não fico meio "preso" à url do site, digo para eu testar localmente os scripts eu teria que usar '<a href="localhost/diretorioDoSite/clientes">clientes</a>', por isso veio a cabeça usar um $_SERVER... Obs: de fato funcionou no servidor web usando a url absoluta. Facilitou visto que tenho as demais página dentro de um diretório 'pages' por exemplo e a index na rais tratando a url e incluindo (include) a página desejada. Outra coisa, não há uma perda de tempo tentando acessar a todos tempo o site e os seus diretórios diretamente com a url absoluta do que apenas "caminhar" pelos diretórios já estando no site com ursl relativas? Não sei como o navegador ou o servidor web interpreta isso... :ermm: Compartilhar este post Link para o post Compartilhar em outros sites
Bergs 53 Denunciar post Postado Junho 23, 2013 vocês sabem como o wordpress faz isso? lembro que ele chama uma função e a parte relativa do link. com o link completo prejudica a agilidade na transição do site e fazer uma variável para pegar o domínio não vai mudar nada pra o SEO já que o link final é html. eu faria assim: <?php $url_base = $_SERVER['HTTP_HOST']; echo $url_base; ?> Compartilhar este post Link para o post Compartilhar em outros sites
ebotega 2 Denunciar post Postado Junho 23, 2013 href="$url_base/produtos/12" fica 'www.meusite.com.br/produtos/12' e se eu tiver um link 'clientes' nessa página de produtos ele fica 'www.meusite.com.br/produtos/clientes' invés de 'www.meusite.com.br/clientes'. Esse é o problema que estou enfrentando. Os links dentro dessas páginas encaram tudo o que tem '/' na url como diretório, aí um link 'clientes' dentro de 'www.meusite.com.br/produtos/classe/tipo/cor/12' vira 'www.meusite.com.br/produtos/classe/tipo/cor/clientes'. Compartilhar este post Link para o post Compartilhar em outros sites
Bergs 53 Denunciar post Postado Junho 23, 2013 o link clientes vc está fazendo assim: href="<?=$url_base?>/clientes"? Compartilhar este post Link para o post Compartilhar em outros sites
ebotega 2 Denunciar post Postado Junho 23, 2013 Sim, href="<?php echo $url_base; ?>/clientes", só que o link direciona para 'www.meusite.com.br/produtos/www.meusite.com.br/produtos/clientes', isso porque ele encarou o 'www.meusite.com.br/produtos/' como o diretório raíz visto que eu informei na url 'www.meusite.com.br/produtos/12', a página reconheceu o que está em negrito como sendo diretório principal e jogou tudo o que está no link depois desse 'diretório'. Sem falar em outro problema com imagens. Se eu tenho a estrutura 'raiz/docs' e eu tento inserir uma imagem que está em 'raiz/img' na página produtos que está em 'docs' o src fira '../', pois ele tem que voltar um nível, Mas quando a index, que está na raiz, é carregada a imagem não aparece. Compartilhar este post Link para o post Compartilhar em outros sites
Bergs 53 Denunciar post Postado Junho 23, 2013 faça assim: <?php $url_base = $_SERVER['HTTP_HOST']; //echo $url_base; function getUrl($string){ return $string = "http://".$string; } ?> <a href="<?php echo getUrl($url_base)?>/clientes">clientes</a> Compartilhar este post Link para o post Compartilhar em outros sites
ebotega 2 Denunciar post Postado Junho 23, 2013 É Bergs... parece que foi! Vou fazer mais alguns testes aqui pra ver se está tudo 100%. O que você fez ali foi na verdade inserir o http:// no $_SERVER['HTTP_HOST'], correto? E sobre o que o mangakah falou sobre não usar super-globais pois eu poderia jogar isso numa constante (define) e trabalhar com ela pelo site. Você também comentou que pegar o link completo prejudica a agilidade na transição do site, de certa forma não estamos pegando o link completo e inserindo no link? Valeu pela força desde já. Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 23, 2013 Melhor assim (na minha opinião): function getUrl($path) { return "http" . (isset($_SERVER["HTTPS"]) and $_SERVER["HTTPS"] == "on" ? "s" : "") . "://" . $_SERVER['SERVER_NAME'] . $path; } <a href="<?php echo getUrl('/clientes'); ?>">clientes</a> Compartilhar este post Link para o post Compartilhar em outros sites
ebotega 2 Denunciar post Postado Junho 23, 2013 Blz, também funcionou na boa... mas por que você acha que esse é melhor mangakah? Corrige alguma 'brecha' ou cerca alguma url 'incorreta'? Estou me familiarizando ainda com alguns termos e assim posso deixar passar algumas coisas... Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 23, 2013 Nada, só acho mais elegante mesmo... :P Compartilhar este post Link para o post Compartilhar em outros sites
ebotega 2 Denunciar post Postado Junho 23, 2013 hahaha, tá certo! Afinal programar também é arte. Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Junho 23, 2013 Pra que toda essa gambiarra? Seta a tag base e pronto, a partir dai ela se torna base para os links/imagens/css e resolve o problema que você está tendo. Compartilhar este post Link para o post Compartilhar em outros sites
ebotega 2 Denunciar post Postado Junho 23, 2013 você diz setar o `$_SERVER['HTTP_HOST']` direto no link ou usar um define... não é isso que o cara tá fazendo, mas chamando via função? Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Junho 23, 2013 http://www.w3schools.com/tags/tag_base.asp Compartilhar este post Link para o post Compartilhar em outros sites
ebotega 2 Denunciar post Postado Junho 23, 2013 Boa ESerra, gostei, essa eu não conhecia. Compartilhar este post Link para o post Compartilhar em outros sites