Ir para conteúdo
Fórum Script Brasil
  • 0

Links em PHP de forma inteligente


RodrigoGomes

Pergunta

Bom dia, eu fiz um script pensando no SEO no meu site, decidi tornar os meus antigos links index.php?cat=register&id=faq em /register/faq/

Para isso, usei dois scripts bem resumidos em PHP e Htaccess que eu fiz, segue ambos:

.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
.php
<?php
$host = $_SERVER['HTTP_HOST'];
$uri  = $_SERVER['REQUEST_URI'];

//caso entrem em index.php vai retornar erro, para evitar páginas duplicadas
if($uri == '/index.php'){
  $_GET['id']='404';
  header('HTTP/1.1 404 Not Found');
  require 'include/error.php';
  exit;
}

//se entrarem na página principal (/), vai carregar o script da principal
//caso o request esteja vazio vai redirecionar para a principal (/)
if($uri=='/'){
  require 'include/index_home.php';
  exit;
}elseif(!$uri){
  header('HTTP/1.1 301 Moved Permanently'); 
  header('Location: http://'.$host.'/');
  exit;
}

//transforma as barras / dos links em traços -
//cada traço no nome dos nossos arquivos na pasta "include" significa uma barra/pasta
$uri_link   = str_replace('/', '-', $uri);
$uri_string = substr($uri_link,1);
if(substr($uri_string, -1) == '-'){
  $uri_string = substr($uri_string,0,-1);
}else{
//se o nome do arquivo não possuir uma barra / no fim, verifica se o arquivo em si existe, se existir redireciona para o arquivo com a barra (evitar páginas duplicadas)
  $filename='include/'.$uri_string.'.php';
    if (file_exists($filename)==true) {
    header('HTTP/1.1 301 Moved Permanently'); 
    header('Location: http://'.$host.$uri.'/'); 
    exit;
    }
}

//aqui verificamos se o arquivo existe, se existir exibimos
//se não existir, carregamos a página de erro 404
$filename='include/'.$uri_string.'.php';
if (file_exists($filename)==true) {
  require $filename;
}else{
  $_GET['id']='404';
  header('HTTP/1.1 404 Not Found');
  require 'include/error.php';
  exit;
}

?>

para usar, é simples:

basta criar uma pasta chamada "include", dentro dela proibir acesso externo por segurança e colocar os arquivos que serão carregados

detalhe, cada traço - no nome do arquivo equivale a uma barra.

agora vem a dúvida.

falta algo? esqueci de algum detalhe? a segurança do script esta boa?

pergunto por que esse mundo de header entre cliente e servidor ainda é um mistério pra mim.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Olá amigo!

Em tempos procurei uma solução que me desse alguma segurança quanto ao acesso directo pelo url, sem navegar pelo site.

Na verdade encontrei um script que adaptei ás minhas necessidades, mas cada página que criava tinha de adicionar as tais linhas de código, acho que vou testar este teu script, parece-me bastante mais simples e fiável.

Como te estás a dar com ele?

Link para o comentário
Compartilhar em outros sites

  • 0
Olá amigo!

Em tempos procurei uma solução que me desse alguma segurança quanto ao acesso directo pelo url, sem navegar pelo site.

Na verdade encontrei um script que adaptei ás minhas necessidades, mas cada página que criava tinha de adicionar as tais linhas de código, acho que vou testar este teu script, parece-me bastante mais simples e fiável.

Como te estás a dar com ele?

Já testei ele em todas ocasiões e esta funcionando perfeitamente.

Seu uso é simples, basta criar uma pasta chamada "include", e nela por os arquivos que sua index vai chamar, no nome dos arquivos cada traço equivale a uma barra, como se fosse uma pasta. Então é bem mais simples organizar tudo em uma só pasta, além de ser muito bom em SEO pois o script não cria página duplicada em nenhuma circunstância.

O script também redireciona como um servidor original se a pasta não tiver "/" no final (caso a pasta exista), exemplo:

eu entro em "www.site.com/teste/teste", ele verifica se existe o arquivo "include/teste-teste.php", se existir ele redireciona para "www.site.com/teste/teste/".

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...