Ir para conteúdo

Arquivado

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

  • 0
Jack Oliveira

CONFIGURAR CERTO URL AMIGÁVEL

Pergunta

Ola galera boa noite. 

estou tendo algumas dificuldade de configurar a minha url amigável pois sempre me aparece este seguinte codigo

a url ela puxa corretamente ex: dominio.com/home

dominio.com/contato

dominio.com/termos

etc..

mais esta sempre aparecendo este codigo em cima onde esta o menu

object(Link)#1 (4) { ["Local"]=> array(1) { [0]=> string(4) "home" } ["Path"]=> NULL ["File"]=> string(4) "home" ["Link"]=> NULL }

 

home

este são o seguinte codigo que estou usando aqui..

 

<!-- HTACCESS -->

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?page=$1

//----------------------

<!-- INDEX QUE PUXA TODOS OS ARQUIVOS DA PAGENA -->
<?php require('Link.class.php');

define('REQ', "_paginas" . DIRECTORY_SEPARATOR);

$link = new Link();

var_dump($link);





if($link->Path != null)
{
	require(REQ . 'pages' . DIRECTORY_SEPARATOR  . $link->Path . '/' . $link->File . '.php' );
}else{
	require(REQ . 'pages' . DIRECTORY_SEPARATOR . '/'  . $link->File . '.php' );
}

?>


<!-- este é a link.class que estou usando ->

<?php

class Link{

	public $Local;
	public $Path;
	public $File;
	public $Link;

	function __construct(){

		$this->Local = strip_tags(trim(filter_input(INPUT_GET, 'page', FILTER_DEFAULT)));
		$this->Local = ( $this->Local ? $this->Local: 'home');
		$this->Local = explode('/', $this->Local);
		$this->checkLink();

	}
	private function checkLink(){

		// VERIFICA SE O INDICE 1 NÃO É UM NUMERO DE PAGINAÇÃO
		if(!preg_match( '/^[0-9]*$/' , $this->Local[0] ) ){
			// VERIFICA SE O ULTIMO INDICE DO LOCAL É UM ARQUIVO PHP
			if(!file_exists(REQ . '/pages/' . end($this->Local) . '.php')){

				// VERIFICA SE O ARQUIVO PHP DO INDICE 0 NÃO EXISTE. 
				if(!file_exists(REQ . '/pages/' . $this->Local[0] . '.php')){
					// VERIFICA SE O INDICE 1 DO LOCAL FOI SETADO OU NÃO ESTA VAZIO
					if(isset($this->Local[1]) && !empty($this->Local[1]))
					{
						// VERIFICA SE O INDICE 1 NÃO É UM NUMERO DE PAGINAÇÃO
						if(!preg_match( '/^[0-9]*$/' , $this->Local[1] ) ){
							// VERIFICA SE O ARQUIVO PHP NO INDICE 1 EXISTE
							if(file_exists(REQ . '/pages/' . $this->Local[0] . '/' . $this->Local[1] . '.php')){
								$this->Path = $this->Local[0];
								$this->File = $this->Local[1];
								$this->Link = ( isset($this->Local[2]) ? $this->Local[2] : null);

							}else{
								// ENTRA AQUI SE O ARQUIVO PHP DO INDICE 1 NÃO EXISTIR
								$this->Path = null;
								$this->File = '404';
								$this->Link = ( isset($this->Local[2]) ? $this->Local[2] : null);
							}

						}else{

							// ENTRA AQUI SE O INDICE 1 FOR UM NUMERO DE PAGINAÇÃO

							// SE O ARQUIVO PHP DO INDICE [0] EXISTIR
							if(file_exists(REQ . '/pages/' . $this->Local[0] . '/home.php'))
							{
								$this->Path = $this->Local[0];
								$this->File = 'home';
								$this->Link = ( isset($this->Local[2]) ? $this->Local[2] : null);

							}else{
								$this->Path = null;
								$this->File = '404';
								$this->Link = null; 
							}

						}

					}else{


						// VERIFICA SE O ARQUIVO PHP DO INDICE [0] EXISTE. 
						if(file_exists(REQ . '/pages/' . $this->Local[0] .  '/home.php')){
							$this->Path = $this->Local[0];
							$this->File = 'home';
							$this->Link = ( isset($this->Local[2]) ? $this->Local[2] : null); 

						}else{

							// ENTRA AQUI SE O ARQUIVO NO INDICE [0] NÃO EXISTIR.
							$this->Path = null;
							$this->File = '404';
							$this->Link = null; 
						}
					}

				}else{
					// ENTRA AQUI SE O ARQUIVO DO INDICE [0] EXISTIR.
					$this->Path = null;
					$this->File = $this->Local[0];
					$this->Link = ( isset($this->Local[1]) ? $this->Local[1] : null);

				}

			} else { 
				// ENTRA AQUI SE O ARQUIVO DO ULTIMO INDICE EXISTIR
				$this->Path = null; $this->File  = end($this->Local); 
			}
			
		}else{
			// ENTRA AQUI SE O INDICE [0] FOR UM NUMERO DE PAGINAÇÃO

			$this->Path = null;

			if($this->Local[0] != '404'){
				$this->File = 'home';
				$this->Link = ( isset($this->Local[0]) ? $this->Local[0] : null);
			}else{
				$this->File = '404';
				$this->Link = null;
			}


		}


	}

}

?>

<!-- Este é onde faz a chamada dentro de cada arquivo -->
*// chamando css, js e menu
<?php
include ("header_footer_menu/header.php");
?>


*//chamando url

 <?php

echo 'termos';

?>

Bom se estiver faltando algo ai pra que ele funcione 100% me diga ai como resolver ele

ou eu que estou fazendo a chamada erra em cada arquivo
            
   Desde já Muit´Grato!!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 respostas a esta questão

Recommended Posts

Em 15/12/2017 at 15:01, pokemaobr disse:

Não entendi muito o que seu código tem que fazer. Porém, para parar de aparecer a descrição do objeto citado na pergunta, basta você remover essa função: 


var_dump($link);

Abraços.

ok desculpe a falta minha de explicar melhor kkk

mais o meu codigo ele é para criar url amigavel

Só que tera umas paginas diferenciados por ex:

dominio.com/home.php ficar assim e o inicio onde aparecera o site com alguns BANNER dominio.com/home

<!-- PAGINAS DO SITE-->

dominio.com/LOJA1/home.php ficar assim dominio.com/LOJA1/home

dominio.com/LOJA1/produto/produtos.php?id=452 ficar assim dominio.com/LOJA1/produto/camisa-azul/452

 ou 

dominio.com/LOJA1/produto/produtos.php?id=452 ficar assim dominio.com/LOJA1/produto/camisa-azul

 

-------------------------------------------------------------------

 

dominio.com/LOJA2/home.php ficar assim dominio.com/LOJA2/home

dominio.com/LOJA2/produto/produtos.php?id=452 ficar assim dominio.com/LOJA2/produto/camisa-azul/452

 ou 

dominio.com/LOJA2/produto/produtos.php?id=452 ficar assim dominio.com/LOJA2/produto/camisa-azul

 

E assim vai

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por RodrigoWD3
      Boa tarde pessoal estou com uma dúvida, seguinte estou criando uma pagina de blog para teste de url amigável ja configurei o .htaccess  , o banco de dados , as postagem com slugs , o problema e que só consigo exibir a noticia completa quando ha uma categoria exemplo .
       
      O site exibe assim :  meusite.com.br/noticias/post-da-noticia/   
      Queria desse jeito: meusite.com.br/post-da-noticia/
       
      porem não queria exibir a categoria noticias, pois os posts vão esta na index
      vou colocar o código da index, acredito que a configuração seja nela
       
      INDEX.PHP
      <?php include "admin/conexao.php"; require_once("include/header.php"); @$url = $_GET['url']; $urlE = explode('/',$url); @$arquivo = $urlE['0']; @$post = $urlE['1']; $paginas = array('empresa','noticias','categoria','contato'); if(isset($post) && $post != ''){ include "single.php"; }elseif(isset($arquivo) && in_array($arquivo, $paginas)){ include "$arquivo.php"; }elseif(isset($arquivo) && $arquivo == ''){ include "home.php"; }else{ include "categoria.php"; } require_once("include/footer.php"); ?>  
    • Por Claudio r Martinez
      Olá amigos, estive pesquisando varios topicos aqui e em outros locais sobre urls amigavel,
      Não encontrei o que preciso e também não consegui adaptar.
      É assim:
      Tenho um site que a url original seria assim: jornadadepodologia.com.br/cursos-detalhes.asp?id_curso=82&curso_nome=ONLINE-PROCEDIMENTOS-PODOLOGICOS-EM-UNHAS-MICOTICAS
      consegui montar a url assim: jornadadepodologia.com.br/new/ONLINE-PROCEDIMENTOS-PODOLOGICOS-EM-UNHAS-MICOTICAS-idpllq82
      onde o "-idpllq82" é o parametro identificador do curso.
      Fiz assim porque eu consigo extrair o ID que é 82 através do SPLIT no ASP.
      Gostaria que a url ficasse assim: jornadadepodologia.com.br/ONLINE-PROCEDIMENTOS-PODOLOGICOS-EM-UNHAS-MICOTICAS
      mas precisava passar os parametros de "id_curso"  para a pagina cursos-detalhes.asp sem aparecer na url, deixando a url como acima.
      Alguém pode me ajudar.
      Desde já, agradeço pela ajuda.
    • Por Jack Oliveira
      Bom dia @Motta Poderia me dar uma pequena ajuda aqui
      estou com uma url amigavel
      ela funciona usando ex: meudominio.com/cidade/nome-do-post/12/
      quero que ele apenas pega o titulo no banco de dados sem precisar pegar o id
      minha url é bem básica
      no meu .HTACCESS
      Fiz assim
      DirectoryIndex index.php ErrorDocument 404 https://www.meusite.com.br/ RewriteCond %{HTTP_HOST} ^meusite\.com\.br$ [OR] RewriteCond %{HTTP_HOST} ^www\.meusite\.com\.br$ [OR] RewriteCond %{HTTP_HOST} ^meusite\.com\.br\/$ RewriteRule ^index\.html\/?(.*)$ "https\:\/\/www\.meusite\.com\.br\/$1" [R=301,L] #------------------------------------------------------------------- #------------------------------------------------------------------- # PERMISSIONANDO REESCRITA #------------------------------------------------------------------- RewriteEngine On # Turn on the rewriting engine # not rewrite css, js and images RewriteCond %{REQUEST_URI} !\.(?:css|js|jpg|gif|png)$ [NC] RewriteRule ^([0-9A-z_-]+)\/([0-9A-z_-]+)\/$ noticias.php?&nome=$1id=$2 [QSA,L,NC] #RewriteRule ^([0-9A-z_-]+)\/([0-9A-z_-]+)\/$ cidade.php?id=$1&nome$2 [QSA,L,NC] #RewriteRule ^buscar index.php [NC,L] <IfModule mod_headers.c> <FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css|css)$"> Header set Access-Control-Allow-Origin "*" </FilesMatch> </IfModule> No arquivo noticias.php
      quero que ele ficasse assim
      meusite.com.br/cidade/noticias-do-mundo-geral/
       
      Na função esta assim
      <?php //URL DEBUG CHARACTERS function encodeSEOString($string) { $string = preg_replace("`\[.*\]`U", "", $string); $string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i', '-', $string); $string = htmlentities($string, ENT_COMPAT, 'utf-8'); $string = preg_replace("`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i", "\\1", $string); $string = preg_replace(array("`[^a-z0-9]`i", "`[-]+`"), "-", $string); return strtolower(trim($string, '-')); } ; ?> No html fiz assim
       
      <a href="./<?php echo encodeSEOString($dados['titulo']); ?>/<?php echo $dados["id"]; ?>/" target="_blank"> nesta forma ai em cima ele funciona mais quando inverto para pegar apenas o titulo ele volta para a url principal
      Antes tinha feito assim
      <a href="./<?php echo encodeSEOString($dados['titulo']); ?>/" target="_blank">
       
      Desde já agradeço...
    • Por RodrigoWD3
      Boa tarde pessoal nao sei se estou no tópico correto , gostaria de tira uma duvida quero fazer um sistema de noticias com url amigavel  em codeigniter ja fiz a parte de noticias para exibir e a view porem estou usando a id para exibir as noticias e o que eu gostaria de fazer era usar a url do titulo da noticia ficando uma url amigavel alguém teria algum tutorial para eu poder estudar obrigado
    • Por Paulo Oliveira Albuquerque
      Ola bom dia galera  se alguem poderia me dar uma ajuda na minha url amigavél,
      Ela funciona de boa 
      mais tenho dois problemas que esta me dando já dor de cabeça
      1º - Quando abre o link da url ex: meusite.com/produtos/23/nome-produtos  se eu por algo  a mais na frente desta url ela aceita e eu gostaria que que ele não aceitasse nada mais além do que foi feito o chamado  se ele for apenas assim ex2:  meusite.com/produtos/23/nome-produtos que nela não aceita se digitar na frente em um navegador qualquer mais coisa ex3:  meusite.com/produtos/23/nome-produtos-novo-uyuy   e nem aceitar se alguem digitar ou mesmo tentar fazer isso  meusite.com/produtos/23/  ou isso aqui  meusite.com/produtos.php?id=23
       
      2ª Minha Url amigavél quando ela e feito o shared em uma rede social quando eu clico dentro da rede social pra abrir a pagina ela esta vindo diferente do que foi postado ele aparece assim quando eu clico para abrir
       
      meusite.com/pasta/produtos/23/nome-produtos /><!-- ==================================================================================================================================== --> <link rel=?fbclid=Mgsgs-swwfw-dwedwedwewf-wefwefwhgygygygjhjnjnjnjnjn#.HDHDHDHDJ-messenger
      e as vezes assim
      meusite.com/pasta/produtos/23/nome-produtos?fbclid=Mgsgs-swwfw-dwedwedwewf-wefwefwhgygygygjhjnjnjnjnjn#.HDHDHDHDJ-messenger
       
      era pra ele aparecer assim quando clicar
      meusite.com/produtos/23/nome-produtos 
       
      No meu HTACCESS ESTA ASSIM
       
      #------------------------------------------------------------------- # PERMISSIONANDO REESCRITA #------------------------------------------------------------------- RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f #------------------------------------------------------------------- # EXTENSAO PHP #------------------------------------------------------------------- RewriteRule ^(.*)$ $1.php #------------------------------------------------------------------- # URL AMIGAVEL #------------------------------------------------------------------- RewriteRule ^produtos\/?([0-9]+)\/?(.+)\/?$ produtos.php?id=$1 RewriteRule ^sobre\/?([a-z]+)\/?(.+)\/?$ sobre.php RewriteRule ^index\/?([a-z]+)\/?(.+)\/?$ index.php RewriteRule ^contato\/?([a-z]+)\/?(.+)\/?$ contato.php RewriteRule ^buscar\/?([a-z]+)\/?(.+)\/?$ buscar.php e a minha função esta assim
       
      <?php //URL DEBUG CHARACTERS function encodeSEOString($string) { $string = preg_replace("`\[.*\]`U", "", $string); $string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i', '-', $string); $string = htmlentities($string, ENT_COMPAT, 'utf-8'); $string = preg_replace("`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i", "\\1", $string); $string = preg_replace(array("`[^a-z0-9]`i", "`[-]+`"), "-", $string); return strtolower(trim($string, '-')); } ; ?> Meu link pra abrir a pagina esta assim
       
      <a href="meusite.com/pasta/produto/<?php echo $id; ?>/<?php echo encodeSEOString($prod_nome); ?>">Listar</a> Obs: como eu disse ela abre normal sem problemas o unico problema que estou tendo foi as que eu sitei ai em cima
×

Informação importante

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