url amigaveis
estou com um código pronto aq de url amigaveis bem simples para qem sabe.. eu quero passa para meu site... e não consigo...
pasta qe ele usa é modulos, a qe eu uso é pagina... ja tentei fazer as coisas e n consigo.. n puxa...
url amigaveis
index.php
<?php
require "classes/Url.php";
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Trabalhando com URL amigável no PHP</title>
<meta name="author" content="Layout: Mauricio Samy Silva / Código: Eduardo Kraus" />
<link rel="stylesheet" type="text/css" href="<?php echo URL::getBase() ?>css/style.css"/>
</head>
<body>
<div id="tudo">
<div id="topo">TOPO</div>
<div id="principal">
<?php
$modulo = Url::getURL( 0 );
if( $modulo == null )
$modulo = "modulo1";
if( file_exists( "modulos/" . $modulo . ".php" ) )
require "modulos/" . $modulo . ".php";
else
require "modulos/404.php";
?>
</div>
<div id="navegacao">
<p><a href="<?php echo URL::getBase(); ?>modulo1">Módulo 1</a></p>
<p><a href="<?php echo URL::getBase(); ?>modulo2">Módulo 2</a></p>
<p><a href="<?php echo URL::getBase(); ?>modulo3">Módulo 3</a></p>
<p><a href="<?php echo URL::getBase(); ?>modulo4">Módulo 4</a></p>
<p><a href="<?php echo URL::getBase(); ?>modulo5">Módulo 5</a></p>
<p><a href="<?php echo URL::getBase(); ?>modulo6">Módulo 6</a></p>
<p><a href="<?php echo URL::getBase(); ?>modulo7">Módulo 7</a></p>
<p><a href="<?php echo URL::getBase(); ?>modulo8/parametro/sei-la/alguma_coisa/25/quase-nada">
Módulo 8 com sub-módulo</a></p>
<p><a href="<?php echo URL::getBase(); ?>qualquer">Módulo 404</a></p>
<p><a href="<?php echo URL::getBase(); ?>teste">Teste.php</a></p>
</div>
<div id="rodape">RODAPE</div>
</div>
</body>
</html>
url.php
<?php
class Url
{
private static $url = null;
private static $baseUrl = null;
public static function getURL( $id )
{
if( self::$url == null )
// Verifica se a lista de URL já foi preenchida
self::getURLList();
// Valida se existe o ID informado e retorna.
if( isset( self::$url[ $id ] ) )
return self::$url[ $id ];
// Caso não exista o ID, retorna nulo
return null;
}
public static function getBase()
{
if( self::$baseUrl != null )
return self::$baseUrl;
global $_SERVER;
$startUrl = strlen( $_SERVER["DOCUMENT_ROOT"] );
$excludeUrl = substr( $_SERVER["SCRIPT_FILENAME"], $startUrl, -9 );
if( $excludeUrl[0] == "/" )
self::$baseUrl = $excludeUrl;
else
self::$baseUrl = "/" . $excludeUrl;
return self::$baseUrl;
}
private static function getURLList()
{
global $_SERVER;
// Primeiro traz todos as pastas abaixo do index.php
$startUrl = strlen( $_SERVER["DOCUMENT_ROOT"] ) -1;
$excludeUrl = substr( $_SERVER["SCRIPT_FILENAME"], $startUrl, -10 );
// a variável$request possui toda a string da URL após o domínio.
$request = $_SERVER['REQUEST_URI'];
// Agora retira toda as pastas abaixo da pasta raiz
$request = substr( $request, strlen( $excludeUrl ) );
// Explode a URL para pegar retirar tudo após o ?
$urlTmp = explode("?", $request);
$request = $urlTmp[ 0 ];
// Explo a URL para pegar cada uma das partes da URL
$urlExplodida = explode("/", $request);
$retorna = array();
for($a = 0; $a <= count($urlExplodida); $a ++)
{
if(isset($urlExplodida[$a]) AND $urlExplodida[$a] != "")
{
array_push($retorna, $urlExplodida[$a]);
}
}
self::$url = $retorna;
}
}
?>
.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
Discussão (2)
Carregando comentários...