Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

jcfr

alterar url

Mensagens Recomendadas

jcfr

boas pessoal, mais uma vez recorro à vossa ajuda e desde já obrigado....

é o seguinte as páginas que tenho ou enviam dados entre elas por post ou por get (como é normal), e quando é usado o get o link aparece do género:

www.mypage.com/pasta/ficheiro.php?var1=multigelados&var2=manuel&var3=variavel3

entretanto vi algumas páginas como esta:

http://www.keyword.pt/anuncios/empresa/MARGENS-FORMACAO-E-ACTIVIDADES-TURISTICAS-E-RECREATIVAS-LDA-/

em que o url é alterado mostrando valores como se fossem pastas

alguém me sabe dizer como fazer isto?

desde já muito obrigado pela ajuda.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jcfr

nunca trabalhei com o .htacess mas vou tentar...

e não existe nenhuma função php ou outra linguagem que altere o link? assim podia criar um script k recebesse as variáveis que eu cria mostrar e colocalas lá de uma forma muito simples senão lá tenho de recorrer ao .htacess

muito obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado
e não existe nenhuma função php ou outra linguagem que altere o link? assim podia criar um script k recebesse as variáveis que eu cria mostrar e colocalas lá de uma forma muito simples senão lá tenho de recorrer ao .htacess

Podes fazê-lo com header('Location: url_do_script'); mas não te aconselho: isso vai fazer com que os utilizadores andem a ser jogados de sítio para sítio, com os consequentes pedidos e respostas. Além disso, as directorias têm mesmo que existir.

O mod_rewrite é mesmo o caminho a seguir, vê lá se esta posta no meu site pessoal serve para as tuas dúvidas (é exactamente para o caso que falas).


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

Convém ter em conta, ao usar o mod_rewrite, que a ordem dos parametros é indispensável ter uma lógica.

Lógico, mas isso deve ter sempre. A vantagem dos "endereços humanos" é que as pessoas possam decorá-lo facilmente, e a lógica de construção do mesmo é parte fundamental.

Por exemplo: Quero ir à loja do site X (www.sitex.com/loja), ver um candeeiro (/candeeiros) chamado "Candeeiro XPTO" (/candeeiro-xpto).

P.S: agora foi engraçado, o domínio sitex.com está registado...  :D


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

Sim, mas nos endereços normais pode-se descurar mais essa questão. Além disso, depende do método que se usar no mod_rewrite. Se for uma coisa simples, tem que haver mesmo uma ordem lógica, senão, tem de se fazer um script mais complexo.

edit : o que pars uns é trivial, para outros que não estão tão dentro do assunto é novo e bom de saber logo :D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado
edit : o que pars uns é trivial, para outros que não estão tão dentro do assunto é novo e bom de saber logo :D

Ah, não te tinha percebido.

Pensei que estivesses a apontar uma limitação do mod_rewrite, mas na verdade estavas a alertar o jcfr para a questão...


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jcfr

obrigado pela ajuda mas isto estám a dar cabo da cabeça vou continuar a olhar pa isto e se tiver algum problema que nao consiga mesmo resolver coloco aqui a duvidaentretanto qualquer coisa que achem util agradeço e desde ja obrigado pela ajuda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jcfr

nem por isso mas as vezes sim...

o que eu tenho neste momento no .htaccess é isto:

RewriteEngine On
RewriteBase /
RewriteRule ^(.+)/([0-9]+)/?$ pagina.php?id=$1

isto faz com que ao eu colocar

http://www.mypage.com/6

me abra o link

http://www.mypage.com/pagina.php?id=6

mas isto so funciona para a raiz da página e eu queria que o redirect fizesse algo do genero:

inseria

http://www.mypage.com/pagina/variavel

e redireccionava para

http://www.mypage.com/pagina.php?id=variavel

ou entao que ao inserir

http://www.mypage.com/pagina.php?id=variavel

simplesmente o link fosse mostrado como

http://www.mypage.com/pagina/variavel

sendo que abria na mesma o primeiro link

isso é possivel?

se sim e poderem colocar aqui um exemplo do código agradecia

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

Isso já não tem propriamente que ver com o mod_rewrite, mas mais com expressões regulares.

Se quiseres que "pagina" também seja dinâmico, fazes assim:

RewriteRule ^(.+)/([a-z]+)/([0-9]+)/?$ $1.php?id=$2

Se "pagina" for estático, fazes assim:

RewriteRule ^(.+)/pagina/([0-9]+)/?$ pagina.php?id=$2

As possibilidades com expressões regulares são verdadeiramente brutais, dá para fazer coisas do arco da velha.

P.S.: esqueci-me, mas o segundo exemplo é um redirect explícito. Leste a posta do meu site que indiquei? É só aplicar as expressões regulares indicadas e forçar o redirect.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jcfr

Isso já não tem propriamente que ver com o mod_rewrite, mas mais com expressões regulares.

Se quiseres que "pagina" também seja dinâmico, fazes assim:

RewriteRule ^(.+)/([a-z]+)/([0-9]+)/?$ $1.php?id=$2

Se "pagina" for estático, fazes assim:

RewriteRule ^(.+)/pagina/([0-9]+)/?$ pagina.php?id=$2

As possibilidades com expressões regulares são verdadeiramente brutais, dá para fazer coisas do arco da velha.

P.S.: esqueci-me, mas o segundo exemplo é um redirect explícito. Leste a posta do meu site que indiquei? É só aplicar as expressões regulares indicadas e forçar o redirect.

experimentei a primeira opção ficando assim

RewriteEngine On
RewriteRule ^(.+)/([a-z]+)/([0-9]+)/?$ $1.php?id=$2

mas não funciona, se colocar

http://www.mypage.com/pagina/variavel

por exemplo www.mypage.com/aveiro/aradas

abre uma página em branco e se colocar

www.mypage.com/aveiro/aradas/

diz que não encontra a página

o que é que estou a fazer mal?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jcfr

De notar que usar a palavra "página" no url, é um pouco .. antiquado e contra a filosofia de uso do mod_rerwite para Human Readable URL's.

a unica coisa que eu queria com isto é mesmo que as variáveis não aparecessem aparecendo apenas os seus valores... e que podesse usar a mesma regra para enviar para a página que eu quizer independentemente da página que seja....

isto sem ter de enviar variaveis pelo method post claro

ou o ideal era mesmo conseguir nem apresentar o nome do ficheiro no link mas isso já tou farto de tentar e não consigo a não ser que ficque pré-definido que tem de ir sempre para uma determinada página....

mas não estou a conseguir

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jcfr

Ah, esquece, percebi mal. :thumbsup:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule .* pagina.php/$0 [PT]

exactamente, mas com um unico problema assim vai encaminhar-me sempre para a página pagina.php e eu queria que isso tb fosse dinamico.

experimentei colocando

www.mypage.com/variavel

e resultou, como era de esperar

mas queria que também funcionasse para outras paginas

e nao sei é possivel mas o ideal era tanto a página como a quantidade de variaveis, os nomes das variaveis e os valores das variaveis serem dinamicos. ou seja nao ter numero fixo de variaveis ou entao poder adicionar uma regra para cada página que eu precise se isso for possivel, fazer distinção de páginas e usar regras diferentes.

o exemplo que deste obrigam a encaminhar sempre para a mesma página...

o exemplo que deste faz exactamente o mesmo que eu tinha inicialmente....

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

Para que queres a irem parar a páginas diferentes? Não faz grande sentido ..

Para cada um ir parar a uma página diferente, tens de controlar essas variáveis minuciosamente, porque se por exemplo um user mete uma "pagina" que nao existe, leva com um 404 em cima.

btw, esse código é suposto ser usado para :

www.mypage.com/pagina/variavel

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jcfr

Para que queres a irem parar a páginas diferentes? Não faz grande sentido ..

Para cada um ir parar a uma página diferente, tens de controlar essas variáveis minuciosamente, porque se por exemplo um user mete uma "pagina" que nao existe, leva com um 404 em cima.

btw, esse código é suposto ser usado para :

www.mypage.com/pagina/variavel

axo que me expliquei mal....

o que eu quero é que a regra sirva para várias páginas, ou seja

quero meter www.mypage.com/pagina1/variavel

e abrir

www.mypage.com/pagina1.php?id=variavel

e noutra ocasião inserir o url www.mypage.com/pagina2/variavel2

e abrir

www.mypage.com/pagina2.php?id=variavel2

ou o ideal mesmo era poder utilizar páginas minhas onde eu fizesse o encaminhamento para

www.mypage.com/pagina2.php?id=variavel2

e o url mostrado fosse

www.mypage.com/pagina2/variavel2

ou

simplesmente

www.mypage.com/variavel2

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jcfr

porque quero que funcione para várias páginas, para a página de apresentação dos dados das empresas, para a página de apresentação dos produtos da empresa, e depois existem páginas de particulares etc etc etc.... quero que funcione para todas e se tiver uma pre definida nao funciona para as outras

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
sc0rpion

Pois mas o que o yoda está a dizer é para concentrares toda a programação num único ficheiro (normalmente index.php) e teres uma variável que controle qual a página que queres.

Em vez de teres pagina.php, pagina2.php, etc., passas a ter index.php?pagina=pagina&var1=x&var2=y e index.php?pagina=pagina2&var1=x&var2=y. No ficheiro index.php verificas o tipo de página e, consoante seja válido ou não, tratas as restantes variáveis.

Fazendo uma analogia com o joomla a tua variável pagina seria o option.

Considerando o teu exemplo o que tu deverias ter seria algo do tipo:

site.com/apresentacao/ --> site.com/index.php?pagina=apresentacao

site.com/apresentacao/empresaX --> site.com/index.php?pagina=apresentacao&var1=empresaX

site.com/apresentacao/empresaY --> site.com/index.php?pagina=apresentacao&var1=empresaY

site.com/produtos/ --> site.com/index.php?pagina=produtos

site.com/produtos/tide --> site.com/index.php?pagina=produtos&var1=tide

Se estiver errado na ideia corrijam-me :thumbsup:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jcfr

sim seria uma boa ideia, o meu problema é que ja tenho a página criada e a funcionar, ou seja nao convem tar a alterar td agora, é uma boa ideia a usar numa próxima vezmas agora ja nao me convém muito...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.