<?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.
Pergunta
RodrigoGomes
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
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.