Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
#-------------------------------------------------------------------
#-------------------------------------------------------------------
#-------------------------------------------------------------------
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@quimera Boa noite, poderia me informa de como fazer, pois eu entendo pouco nisso de url...
>
19 horas atrás, Paulo Tuan disse:
@quimera Boa noite, poderia me informa de como fazer, pois eu entendo pouco nisso de url...
Não sabemos a estrutura do seu projeto, fica complicado ajudar.
Mas, você dividir a sua URL em Parâmetros dentro do HTACCESS da seguinte forma:
Arquivo HTACSS
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Options All -Indexes
DirectoryIndex index.php
RewriteRule ^(.*)$ index.php?pg=$1 [QSA,L]
Classe de gerenciamento de Parâmetros de url (simplificada)
class Url
{
private static $url = null;
private static $baseUrl = null;
/**
* Retorna a URL base do site
* @return string
*/
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;
}
/**
* Retorna a URL baseado no número do parâmetro na URL (começando em zero)
* @param int $id
* @return string/null
*/
public static function getURL($id)
{
// Verifica se a lista de URL já foi preenchida
if (self::$url == null)
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;
}
}
Uso:
/ Parâmetros que seu site usa geralmente /
$parametroZero = Url::getURL(0);//geralmente a base (a página solicitada)
$parametroUm = Url::getURL(1);
$parametroDois = Url::getURL(2);
$parametroTres = Url::getURL(3);
Agora é só criar uma classe de rotas, assim você pode controlar todas as entradas.
Desculpe a minha audácia aqui...
Mas, por que ao invés de você colocar várias URLs no seu .htacces, você não filtra pelo PHP.
Já que você não quer que seu usuário coloque url/parâmetros que não existam, redirecione com o que você tem da URL.
Exemplo:
www.seusite.com/produto/23/central-de-ar/modificacao-pelo-usuario
você verifica se tem algo a mais na sua URL e redireciona para:
www.seusite.com/produto/23/central-de-ar
Obs.: se preocupar com parâmetros extras não é importante, deveria se preocupar com a segurança dos dados de entrada.