Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pericles.sa

Pegar url da página sem o www e / no final

Recommended Posts

É possível pegar a url da página atual e forçar para que não apareça o www e nem a / (barra) no final?

 

O meu objetivo é utilizar esse comando para automatizar a tag canonical afim de evitar conteúdo duplicado no site.

 

<link rel=”canonical” href=”url-canonica.html” />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu utilizo um .htaccess com o seguinte.:

 

# no-www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

# remove barra do final da url
RewriteCond %{REQUEST_URI} (.*)$
RewriteRule ^(.+)/$  /$1 [R=301,L]

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu não sei o que são tags canônicas, mas baseando-me pela resposta do Leo, a qual mostra como pegar apenas o domínio, eu faria dessa forma (já me precavendo da eliminação da barra final):

 

$url = 'http://forum.imasters.com.br/topic/459634-pegar-url-da-pagina-sem-o-www-e-no-final/page__pid__1819634#entry1819634';

var_dump( rtrim( parse_url( $url, PHP_URL_HOST ), '/' ) );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para esse tipo de coisa, sem dúvidas se deve utilizar .htaccess como o Francispansa

 

Da uma olhada nesse link -> http://www.mestreseo.com.br/seo/redirecionamento-301-em-php-asp-htaccess-coldfusion-e-ruby-on-rails

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer assim:

 

<?php
$domain = str_replace('www.', '', $_SERVER['HTTP_HOST']);
echo $domain;?>

 

Leo o seu código foi meio caminho andado... ele só imprime o domínio até o .com na verdade eu gostaria que ele imprimisse dessa forma:

 

Ex.:

URL Original: www.meudominio.com/arquivo.php

URL que desejo: meudominio.com/arquivo

 

Nesse caso ele pega a url sem o www, sem a extensão do arquivo e sem a barra inclinada no final da url.

 

Meu objetivo é automatizar o link canônico para evitar conteúdo duplicado. No momento não quero utilizar o redirecionamento 301

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmmmm... Aprendi mais uma ^_^

 

Bom, mudando um pouquinho o código:

 

// Encontrando o domínio

$domain = parse_url( $url, PHP_URL_HOST );

// Pegando tudo a partir dele

$url = rtrim( substr( $url, (int) strpos( $url, $domain ) ), '/' );

var_dump( $url );

Para a mesma URL usada acima, tem-se tudo da palavra forum (subdomínio) pra frente.

 

A questão da extensão do arquivo, a menos que você SÓ queira remover .php é complicada, pois são milhares de extensões a serem consideradas.

 

Se for só uma, outro substr() resolve. Daria pra fazer uma coisa bem mais bacana se parse_url() permitisse múltiplos componentes, ao invés de um por vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leo o seu código foi meio caminho andado... ele só imprime o domínio até o .com na verdade eu gostaria que ele imprimisse dessa forma:

 

Ex.:

URL Original: www.meudominio.com/arquivo.php

URL que desejo: meudominio.com/arquivo

 

Eu faria assim:

 


<?php
$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; // monta o URL
$url = str_replace('www.', '', $url); // remove o www. se houver
echo $url; // exibe o URL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmmmm... Aprendi mais uma ^_^

 

Bom, mudando um pouquinho o código:

 

// Encontrando o domínio

$domain = parse_url( $url, PHP_URL_HOST );

// Pegando tudo a partir dele

$url = rtrim( substr( $url, (int) strpos( $url, $domain ) ), '/' );

var_dump( $url );

Para a mesma URL usada acima, tem-se tudo da palavra forum (subdomínio) pra frente.

 

A questão da extensão do arquivo, a menos que você SÓ queira remover .php é complicada, pois são milhares de extensões a serem consideradas.

 

Se for só uma, outro substr() resolve. Daria pra fazer uma coisa bem mais bacana se parse_url() permitisse múltiplos componentes, ao invés de um por vez.

 

Bruno estou iniciando no php fiz um código aqui que funciona na prática mas não sei se está feito de maneira certa. Gostaria da sua Opinião.

 

<?php
$server = str_replace ('www.', '', $_SERVER['SERVER_NAME']); // Pega o domínio sem o WWW
$endereco = str_replace ('.php', '', $_SERVER ['REQUEST_URI']; // Pega a o endereço sem o .php
?>
<p>
http://<?php echo $server . $endereco ?> // Imprime a URL sem o www e sem a extensão .php
</p>

Só não consegue forçar a retirada da / no final, caso alguém acesse o endereço com a / no final, o código vai imprimir o a URL com a barra. Para resolver esse problema tive que fazer um redirecionamento 301 pelo .htaccess

 

RewriteEngine on
RewriteCond %{REQUEST_URI} (.*)$
RewriteRule ^(.+)/$  /$1 [R=301,L]

 

O código ficou muito remendado ou é isso ai?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A graça do PHP é que existem diversas formas de fazer a mesma coisa.

 

O que não tem graça é ficar arrancando os cabelos para ver qual delas executa mais rápido, já que cada forma de implementação usa mais ou menos recursos que acabam influenciando a performance, para mais ou para menos.

 

Para retirar a barra final, use o rtrim() como eu fiz. Muita gente esquece do segundo argumento das funções de limpeza de string - ltrim(), rtrim() e trim() - que, respectivamente, limpam uma string à esquerda, à direita e em ambos os lados.

 

Se você omitir esse segundo argumento, somente os espaços ao redor da string serão removidos. Se você informar alguma coisa, isso também será removido.

 

Como é a barra final, ela sempre estará à direita, então optei por rtrim(). E como quero remover a barra final, defini ela como segundo argumento.

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

A graça do PHP é que existem diversas formas de fazer a mesma coisa.

 

O que não tem graça é ficar arrancando os cabelos para ver qual delas executa mais rápido, já que cada forma de implementação usa mais ou menos recursos que acabam influenciando a performance, para mais ou para menos.

 

Para retirar a barra final, use o rtrim() como eu fiz. Muita gente esquece do segundo argumento das funções de limpeza de string - ltrim(), rtrim() e trim() - que, respectivamente, limpam uma string à esquerda, à direita e em ambos os lados.

 

Se você omitir esse segundo argumento, somente os espaços ao redor da string serão removidos. Se você informar alguma coisa, isso também será removido.

 

Como é a barra final, ela sempre estará à direita, então optei por rtrim(). E como quero remover a barra final, defini ela como segundo argumento.

 

:thumbsup:

Não sei onde inserir o rtrim() você poderia colocar ele no meu codigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mais externamente possível. Depois de todas as limpezas feitas, antes de literalmente usar a variável.

 

Basta ver como eu fiz. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

sem barra no final e se digitar a barra vai funcionar também

 

RewriteEngine on

RewriteCond %{SCRIPT_FILENAME} !-f

RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule ^([a-z0-9-]+)/?$ index.php?pagina=$1 [NC]

 

 

para deixar a barra no final ( já abre com barra no final )

 

RewriteEngine on

RewriteCond %{SCRIPT_FILENAME} !-f

RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule ^(.*)$ index.php?pagina=$1

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.