Jump to content

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


tibi

Recommended Posts

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... ?

Obrigado

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

Link to comment
Share on other sites

Exactamente, é o mod rewrite. Também existe uma opção em PHP, com uma abordagem diferente, para quem não tem a oportunidade de mexer na opção mod_rewrite:

https://wiki.portugal-a-programar.pt/dev_web/php/htaccess/

Deixo apenas aqui para que fique de referência a utilizadores sem mod_rewrite.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Em 17/10/2009 às 19:54, softclean disse:

Exactamente, é o mod rewrite. Também existe uma opção em PHP, com uma abordagem diferente, para quem não tem a oportunidade de mexer na opção mod_rewrite:

https://wiki.portugal-a-programar.pt/dev_web/php/htaccess/

Deixo apenas aqui para que fique de referência a utilizadores sem mod_rewrite.

Interessante essa classe...

Link to comment
Share on other sites

Em 17/10/2009 às 19:54, softclean disse:

Exactamente, é o mod rewrite. Também existe uma opção em PHP, com uma abordagem diferente, para quem não tem a oportunidade de mexer na opção mod_rewrite:

https://wiki.portugal-a-programar.pt/dev_web/php/htaccess/

Deixo apenas aqui para que fique de referência a utilizadores sem mod_rewrite.

Não é bem sem htaccess, é simulando o mesmo.

Link to comment
Share on other 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

Link to comment
Share on other 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.

Link to comment
Share on other 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

Link to comment
Share on other 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.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other 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º $ 😛

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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". 😛 Se isto não funcionar, o problema é da regra do htaccess.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.