• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

tibi

Alterar string da Url ex: index.php?pagina=home para nomesite/home

13 mensagens neste tópico

Boas tardes.

Alguém me pode dar uma dica como hei-de alterar o url da página.

gostava que em vez de index.php?pagina=home ficasse nomesite/home

Tenho visto isso em alguns sites, mas não consigo encontrar nada que me ajude.

Também pode acontecer que seja eu a fazer uma má pesquisa... :hmm:

Obrigado

E ja agora, como iria ficar o link? <ahref = "index.php?pagina=home">!!?? ou sera mudado tambem!?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ja encontrei mais informação sobre mod_rewrite, videos até. Quando se pesquisa logo pelo nome é mais facil.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Volto aqui a escrever, pois ando com problemas nisto do rewrite...

Faço pesquisas, ja vi videos mas não consigo encontrar algo que me ajude nos links.:wallbash:

Antes de mais, o meu problema. Ando a experimentar um trabalho que tenha 2 linguas ("pt" e "en" ).

Para navegar nas páginas uso: index.php?page=home (home, teste, teste2,...)

Para alterar a lingua uso:  ?lang=pt (pt, en)

Prentendia alterar 127.0.0.01/mod_rewrite/index.php?lang=pt&page=home para algo como

127.0.0.01/mod_rewrite/pt/home

Tenho um htaccess  com as linhas:

RewriteEngine On

RewriteRule ^page/(.*)$ index.php?page=$1

RewriteRule ^lang/(.*)$ index.php?lang=$2

No php

<?
$get = explode("/", $_SERVER['REQUEST_URI']);
echo "<pre>";
print_r($get);
echo "</pre>";

switch ($_GET['page'])
{	
case "home":
        include 'home.php';
        break;
       case "teste":
        include 'teste.php';
        break;
case "teste2":
         include 'teste2.php';
         break;

       default:
include 'home.php';
break;
};			
?>

Não estou a conseguir meter isto a trabalhar. Se alterar na URL a variavel, carrega me as paginas

127.0.0.01/mod_rewrite/page/home (home, teste, teste2)

Mas o que devo meter nos links?? Se meter <a href="teste">, não carrega, se meter no link <a href="page/teste"> ao clicar nos links fica: 127.0.0.01/mod_rewrite/page/page/teste  :bored:

E também quando entro pela primeira vez no trabalho, não me aparece 127.0.0.01/mod_rewrite/page

E isto só em relação a "page". :wallbash:

Ainda me falta depois trabalhar com a variavel do "lang"

Possivelemte tenho que alterar ou criar regras novas no htaccess

Podiam  me dizer o que fazer, ou onde me basear para compreender isto melhor, em relação aos links e não so..

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta usar condições, e não só regras. Lê mais sobre mod_rewrite. É uma coisa complicada de se fazer, e varia muito de server para server.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Complicado... Estou a ver que sim...

Já vi vídeos, já li tutoriais, todos eles mostram-me a funcionalidade do mod_rewrite, todos eles me dão um exemplo do tipo domain.com/page/teste 

Pelo que percebi significa index.php?page=teste

Se alterar no URL teste por outra palavra, muda de página (desde que exista). Mas não encontro nada com links. Que tipo de link devo fazer!?

Mas obrigado na mesma. Se alguém tiver alguma ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por acaso percebes-te mal. Nos urls normais tens como parâmetros uma chave e um valor associado (?chave=valor), e o que o mod_rewrite supostamente faz é acabar com a chave, ficando apenas o valor. Ou seja :

index.php?page=teste

para

index.php/teste

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu acho que o que tu querias fazer seria algo como:

RewriteEngine On
RewriteRule ^(*.)$/(.*)$ index.php?page=$1〈=$2

Ou seja, se o URL for /mod_rewrite/pagina/pt, ele deve ir para index.php?page=pagina〈=pt.

Isto é do que me lembro, no entanto, não testei.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

^lang/(.*)$ index.php?lang=$2

Para um regra destas a URI tinha que começar por lang (sem a / inicial). Experimenta ^/mod_rewrite/lang/(.*)$ index.php?lang=$1 e ^/mod_rewrite/page/(.*)$ index.php?page=$1

PS: softclean, isso não leva o 1º $ :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas olha lá, tu quando estás em /mod_rewrite/page/wtv, a tua URL base dos links é /mod_rewrite/page/, mas se estiveres em /mod_rewrite/page/wtv, já é /mod_rewrite/page/wtv/.

Experimenta meter isto no teu <head>:

<base href="http://127.0.0.1/mod_rewrite/" />

E usar no <a> "pages/xpto". :P Se isto não funcionar, o problema é da regra do htaccess.

0

Partilhar esta mensagem


Link 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