Jump to content
Sign in to follow this  
fsales_123

url amigaveis

Recommended Posts

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]

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By Amauri Benedito Gritti
      Ola Boa noite pessoal, preciso de uma ajuda de vcs sobre URL amigáveis e .htaccess
      tenho um site que usa URL amigáveis, esta instalado no diretório raiz e funciona perfeitamente, porém gostaria que ele rodasse em um subdomínio e não sei como alterar o .htaccess
       
      este é o arquivo que funciona no diretório raiz perfeitamente  
       
      RewriteEngine On
       
      # Diretorios extras
      RewriteRule ^testes - [L,NC]
      RewriteRule ^exemplo - [L,NC]
       
      #padrozinar diretorio /admin
      RewriteRule ^admin/([a-zA-Z0-9-_/]+)/?$ ./index.php?dir=admin&route=$1 [L,QSA]
      RewriteRule ^admin/([a-zA-Z0-9-_/]+)?$ ./index.php?dir=admin&route=index [L,QSA]
      RewriteRule ^admin([a-zA-Z0-9-_/]+)?$ ./index.php?dir=admin&route=index [L,QSA]
       
      #chat
      RewriteRule ^atd - [L,NC]
      RewriteRule ^/atd - [L,NC]
      RewriteCond $1 !^(css|js|img|fotos|slide)/
       
      #Diretorios da base
      RewriteRule ^([a-zA-Z0-9-_/]+)/?$ ./index.php?route=$1 [L,QSA]
      RewriteRule ^([a-zA-Z0-9-_/]+)?$ ./index.php?route=index [L,QSA]
       
      O que devo mudar para que o mesmo script funcione em um subdomínio ?
       
      Alguém poderia me ajudar, desde já fico agradecido
       
       
    • By Chris Martin
      Saudações,
      Como faço para enviar via get os dados de um input com URL's amigáveis?
      Por exemplo eu tenho um input tipo texto, quando digita algo nele e envia aparece assim: "seusite.com/index.php?busca=valor-pesquisado".
      Queria que aparecesse assim: "seusite.com/busca/valor pesquisado".
      A parte de extrair os dados eu já tenho e já sei como vou fazer, mas não sei como enviar do input direto para o link.
      no caso, para extrair o dado eu usaria a Global $_SERVER.
    • By PatrickLutherdeck
      Trabalhando com Url amigaveis tive uma dificuldade em dar prioridade a uma linha, a regra de cima para baixo não deu certo.



      Olha esse exemplo


      Options +FollowSymLinks
      RewriteEngine On

      RewriteRule ^page1$ page1.php
      RewriteRule ^(.*)?$ page2.php [NC,L]
      e quando entro em localhost/page1 o resultado e a page2.php.



      Tem como definir algo ?

    • By PatrickLutherdeck
      Trabalhando com Url amigaveis tive uma dificuldade em dar prioridade a uma linha, a regra de cima para baixo não deu certo.
       
      Olha esse exemplo
      Options +FollowSymLinks RewriteEngine On RewriteRule ^page1$ page1.php RewriteRule ^(.*)?$ page2.php [NC,L] e quando entro em localhost/page1 o resultado e a page2.php.
       
      Tem como definir algo ?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.