Ir para conteúdo

POWERED BY:

Arquivado

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

Good

url personalizada

Recommended Posts

como eu faria um sistema de urls personalizadas..

 

ex.:

http://www.site.com.br/meu_nome

http://www.site.com.br/testando

 

 

eu sei que usa alguma coisa com cgi, algo assim.. só que não sei fazer..

 

tipo.. algumas pessoas terão o direito de criar uma url personalizada.. pq as outras são assim: www.site.com.br/perfil.php?id=XXX

 

ae eu penso em fazer assim: criar uma página pra eles digitarem a url desejada com limitação a alguns caracteres.. depois, eu faço uma verificação pra ver se existe uma url personalizada com aquele nome escolhido, se der true exibe os dados e se der falso dá uma msg de erro..

 

 

alguém me ajuda a fzer?

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha ae:

 

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, as@h.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache/2.2.4 (Win32) PHP/5.2.3 Server at localhost Port 80

esqueci de como está o .htaccess:

 

RewriteEngine on
RewriteRule ^([0-9]+)\/?$ perfil.php?id=$1

url de como tá sendo digitada: http://localhost/site/novo_site/1

 

 

o 1 é a ID do usuário.. depois eu verifico no php se é um número ou palavras (is_numeric)..

 

ajuda ae gnete..

 

já faz 6 dias e só uma pessoa respondeu!!!!!!!!!!!!!!!!

 

 

esse link q ele passou dá o mesmo erro!!

 

 

e eu queria assim:

 

http://localhost/site/novo_site/MeuNome

 

e não assim:

http://localhost/site/novo_site/nome/MeuNome

Compartilhar este post


Link para o post
Compartilhar em outros sites

^\/site\/novo_site\/([0-9]*)$ perfil.php?id=$1

Nota: URL's contendo o caractere underscore _ são consideradas inválidas por muitos sistemas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

HTTP Error 404 - File or directory not found.

 

#habilita o modulo Rewrite
RewriteEngine On

#Indica qual é a pasta base de todo o conteudo
RewriteBase /

#Verifica se a url digitada é um arquivo caso seja para aqui
RewriteCond %{REQUEST_FILENAME} !-f

#Verifica se a url digitada é uma pasta caso seja para aqui
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^\/sitenovo\/([0-9]*)$ perfil.php?id=$1

 

Onde eu coloco esse .htaccess?

 

Coloquei na pasta anterior a sitenovo, coloquei dentro dela.. e nada!!

 

no localhost aparece esse erro:


Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, as@h.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache/2.2.4 (Win32) PHP/5.2.3 Server at localhost Port 80

e no host aparece o erro 404!! Q porqueira, já tá dando raiva isso.. pra q inventaram isso..

 

ninguém sabe resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro 404!

 

Cara, como fica o script completo? Vcs testaram pra ver se dá certo? Aonde eu colco esse script? dentro da pasta "sitenovo",na pasta antes da "sitenovo"? Ou 2x antes da pasta "sitenovo?"

 

 

vlw

 

Eu percebi que eu acho que não tem erro neste código.. pois tentei fazer isso:

 

RewriteEngine on
RewriteRule ^sitenovo/([^/]+)/id(|/)$ /perfil.php?id=$1
RewriteRule ^entre(|/)$ /entre.php

Deu o mesmo erro.. tem que habilitar alguma coisa?

 

Acho que o código não está errado..

 

pq eu coloquei esse:

 

#RewriteEngine on
#RewriteRule ^sitenovo/([^/]+)/id(|/)$ /perfil.php?id=$1
#RewriteRule ^entre(|/)$ /entre.php
e não deu certo..deu o erro 404..

 

talvez tenha que habilitar alguma coisa não?

 

Acho que o código não está errado..

 

pq eu coloquei esse:

 

#RewriteEngine on
#RewriteRule ^sitenovo/([^/]+)/id(|/)$ /perfil.php?id=$1
#RewriteRule ^entre(|/)$ /entre.php
e não deu certo..deu o erro 404..

 

talvez tenha que habilitar alguma coisa não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

#RewriteEngine on
#RewriteRule ^sitenovo/([^/]+)/id(|/)$ /perfil.php?id=$1
#RewriteRule ^entre(|/)$ /entre.php

Aqui você comentou todas as linhas, é como se não houvessem regras, ou não houvesse o arquivo .htaccess ali.

 

Acontece então uma requisição ao caminho que foi digitado (no caso www.site.com.br/sitenovo/id). Uma vez que este endereço não existe, um erro 404 é disparado.

 

Faça dois testes:

 

1º Coloque um arquivo .htaccess na raiz do domínio contendo apenas a expressão:

"teste"

Isto deve gerar um erro de servidor. Caso o mesmo não aconteça, você não tem suporte a AllowOverride habilitado.

 

Caso funcione (dê o erro), vamos começar a melhorar isto.

 

Defina a seguinte linha:

ErrorDocument 404 /erros/erro.php?level=404

Crie o diretório erros, crie um novo arquivo chamado erro.php que levará o seguinte conteúdo:

<? if(!empty($_GET['level'])) echo "Erro {$_GET['level']} ao acessar {$_SERVER['HTTP_REFERER']}"; ?>

 

Digite 'www.seusite.com.br/diretorio/paginanaoexiste.html' e veja se a mensagem:

Erro 404 ao acessar www.seusite.com.br/diretorio/paginanaoexiste.html

aparece.

 

Se tudo estiver OK, defina novamente as regras de redirecionamento como foi sugerido neste mesmo tópico e poste as mensagens de resposta do servidor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza.. tá desabilitado mesmo.. eu contatei os cara, e eles disseram q tem q habilitar esse AllowOverride pelo .htaccess mesmo..

 

as linhas tavam com # pq no meu pc tava desabilitado, mas já habilitei.. ae eu habilito como?

 

 

AllowOverride AuthConfig

ou

AllowOverride none

 

 

Como esse AllowOverride no começo de todo o código?

Compartilhar este post


Link para o post
Compartilhar em outros sites

crie um arquivo .htaccess na raiz do domínio com o seguinte conteúdo

<Directory />
AllowOverride All
</Directory>

Se não funcionar - o que eu creio que certamente vai acontecer - verifique instruções passo-a-passo com o suporte do seu host.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É.. num deu certo não..

 

já contatei eles..

 

vlw

 

Já contatei eles, e eles deram um jeito.. estou usando assim:

 

RewriteEngine on
RewriteRule ^([0-9]*)(|/)$ perfil.php?id=$1

só que não quero assim, quero fazer igual ao twitter: twitter.com/usuario

 

O que eu tenho de fazer?

 

Eu tentei assim, só que deu erro.. dizia que dava erro de redirecionamento..:

RewriteEngine on
#RewriteRule ^([0-9]*)(|/)$ perfil.php?id=$1
RewriteRule ^([^/]+)/id(|/)$ /perfil.php?usuario=$1

Como eu tenho que fazer pra dar certo? Tenho que colocar todas as URL do site pra serem amigáveis?

Compartilhar este post


Link para o post
Compartilhar em outros sites

RewriteRule (.*) perfil.php?usuario=$1

Qualquer coisa que vier depois da barra será passado como parâmetro para perfil.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, eu terei que fazer url amigável com todas as url pra dar certo?

 

pq eu tentei agora, ae dava um erro.. eu tentava entrar em outra página e dava erro tbm..

 

tenho q colocar todas as url assim pra dar certo? Pra ficar assim: http://www.site.com.br/usuario

e poder acessar por ex essa página: http://www.site.com.br/conteudo.php'>http://www.site.com.br/conteudo.php

 

e colocar pra ficar assim no htaccess: http://www.site.com.br/conteudo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de testar aqui assim:

 

teste.php

<?php print_r($_REQUEST);

 

.htaccess

RewriteEngine on
RewriteRule (.*)$ teste.php?param=$1

endereco.com/testedetudoaqui

 

O valor em negrito será acessível pelo arquivo teste.php através da variável $_GET['param']

 

Para criar páginas "protegidas", você pode fazer um array listando-as:

<?php

$system = array(
   'signup' => 'cria_usuario.php',
   'login' => 'entra_usuario.php',
   'logout' => 'sai_usuario.php',
   'register' => 'conclui_registro.php',
   'die' => 'exclui_usuario.php'
);

if(in_array($_GET['param'], $system)) header("Location: {$system[$_GET['param']]}");

else include "buscamembro.php?membro={$_GET['param']}";

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim.. mas eu to perguntando se eu tenho de colocar todas as páginas pra serem url amigáveis pra esse negócio funcionar..

 

ou seja:

RewriteEngine on
RewriteRule (.*) perfil.php?usuario=$1
RewriteRule login(|/) login.php
RewriteRule cadastro(|/) cadastro.php

pra acessar o perfil: http://www.site.com.br/usuario

e pra acessar por exemplo a página de login: http://www.site.com.br/login

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza..

 

você num entendeu não.. mas beleza.. vou colocar tdo no htaccess..

 

vlw

 

Nam cara.. voltando ao tópico!!!

 

Olha, eu não quero proteger nada..

 

 

Tipo.. o pessoal acessa o twitter dos outros assim: http://www.twitter.com/usuario

e para se cadastrar por exemplo: http://www.twitter.com/signup

 

Como é que eu faço isso? Tipo, eu fiz do jeito que você disse aí.. include agora acessa arquivos informando variáveis?

 

Eu tentei acessar as páginas aqui e não verifica se estava dentro do array, já ia direto pro include.. sendo que estava dentro do array na variável system!

 

no .htaccess num dá pra fazer isso não? Pq eu tbm coloco assim:

 

RewriteEngine on
RewriteRule ^membros(|/)$ membros.php
RewriteRule ^entre(|/)$ entre.php

RewriteRule (.*)$ perfil.php?usuario=$1

Num dá pra verificar isso no .htacess ñ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeitamente. Apenas certifique-se de definir a flag last ao fim da regra, para que ela não seja passada adiante:

 

RewriteEngine on
RewriteRule ^membros/?$ membros.php [L]
RewriteRule ^entrar/?$ entrar.php [L]
RewriteRule (.*)$ perfil.php?usuario=$1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está dando redirecionamento incorreto..

 

cara, tem como você testar pra ver se dá certo isso?

 

E isso tá sendo por causa do RewriteRule (.*)$ perfil.php?usuario=$1

 

quando eu tiro, pára de dar esse redirecionamento incorreto..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Good, você também tem que testar algumas variações. Nem sempre vindo ao fórum vão te dar a solução completa só copiar e colar e vai funcionar belezinha.

 

Notou o que a ER proposta faz(faria se funcionasse)?

 

RewriteRule (.*)$ perfil.php?usuario=$1

Casa tudo, quantas vezes existir e envia como parâmetro [usuario] para perfil.php.

 

Logo:

 

site.com/teste

redireciona para

 

site.com/perfil.php?usuario=teste

O problema é que o endereço acima também casa com a ER [tudo, quantas vezes existir]

redireciona para

 

site.com/perfil.php?usuario=perfil.php?usuario=teste

e assim:

site.com/perfil.php?usuario=perfil.php?usuario=perfil.php?usuario=teste
site.com/perfil.php?usuario=perfil.php?usuario=perfil.php?usuario=perfil.php?usuario=teste
...

Aí eu venho refazer uma citação já existente:

 

Para criar páginas "protegidas", você pode fazer um array listando-as:

 

Como em .htaccess não temos a possibilidade de utilizar (?!palavra-negada), temos que negar caractere por caractere de perfil.php?id= a fim de formar uma proteção sólida em htaccess (o que como já foi dito deve ser feito em runtime com php e array.

 

Isso nos obriga a colocar um identificador antes da expressão coringa. Para nosso exemplo, utilizaremos a palavra 'perfil'

 

RewriteEngine on
RewriteRule ^membros/?$ membros.php [L]
RewriteRule ^entrar/?$ login.php [L]
RewriteRule ^perfil/(.*)$ perfil.php?usuario=$1

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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