Ir para o conteúdo
fnds

[.htaccess] Redirectionar

Mensagens Recomendadas

fnds    2
fnds

Eu tenho três formas de aceder à mesma pasta:

- http://ola.exemplo.com/adeus/

- http://adeus.ola.exemplo.com/

- http://www.adeus.com/

O que eu quero fazer é que quando se acede a partir das duas primeiras o utilizador seja redirectionado para a treceira.

Já consegui +/- redirectionar a primeira,

RedirectMatch ^/adeus/(.*)$ http://www.adeus.com/$1

Só que esta solução tem um problema, se eu colocar http://www.adeus.com/adeus/, se não tiver barra ("/") não há problema, ele redirectiona para http://www.adeus.com.

O .htaccess está dentro da pasta "adeus".

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Battousai    1
Battousai

Poes [/] ( ou [\/] se tiveres que escapar o caracter ) que torna a barra opcional, o problema passa a ser é que tás a pegar no conteúdo à frente. não sei se vai fazer algum conflito. é experimentares, se não der acrescentas uma linha.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

Ok, mas isso não é para o meu problema... (Até piora :P )

Como faço para redirectionar a segunda?

Dá para fazer uma coisa do género?

[pre]se o host == adeus.ola.exemplo.com

    redirectionar para www.adeus.com[/pre]

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

Já consegui fazer aquilo que queria. :P

RedirectMatch 301 ^/adeus/(.*)$ http://www.adeus.com/$1
Redirect 301 /adeus http://www.adeus.com/

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^adeus.ola.exemplo.com|^adeus.com [NC]
RewriteRule ^(.*)$ http://www.adeus.com/$1 [L,R=301]

Ainda vou tentar corrigir um erro, para que quando eu introduzir  http://www.adeus.com/adeus'>http://www.adeus.com/adeus/'>http://www.adeus.com/adeus'>http://www.adeus.com/adeus/ ou  http://www.adeus.com/adeus'>http://www.adeus.com/adeus ele não redirectionar para http://www.adeus.com.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

Isto é mais um monologo que uma discução!, mas pronto...

A solução é esta:

Options +FollowSymLinks
RewriteEngine on

#Redirectiona de adeus.ola.exemplo.com e de adeus.com para www.adeus.com
RewriteCond %{HTTP_HOST} ^adeus.ola.exemplo.com|^adeus.com [NC]
RewriteRule ^(.*)$ http://www.adeus.com/$1 [L,R=301]

#Redirectiona de ola.exemplo.com/adeus/ para www.adeus.com
RewriteCond %{HTTP_HOST} ^ola.exemplo.com [NC]
RewriteCond %{REQUEST_URI} ^/adeus/ [NC]
RewriteRule ^(.*)$ http://www.adeus.com/$1 [L,R=301]

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

A última rewriterule embora funcione, não está correcta. Ele vai matchar /blablabla e vai redireccionar para www.adeus.com//blablabla, repara nas 2 /.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

A última rewriterule embora funcione, não está correcta. Ele vai matchar /blablabla e vai redireccionar para www.adeus.com//blablabla, repara nas 2 /.

Não vai não, não sei onde estás a ver duas barras :/

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

Fds, alguem aqui não está a perceber!

Eu acho que o $1 é em relação ao que está depois do ola.exemplo.com/adeus/. De qualquer maneira (não sei porquê, mas gostava de saber :P) se eu introduzir um url com 2 / ele ao redirectionar coloca só 1 / :s

Ex: ola.exemplo.com/adeus/duas//barras//o  ---> www.adeus.com/duas/barras/o

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

Troca 2 barras por 1 porque o httpd foi clever e fez sanitizing ao endereço. É o mesmo que pedires http://xpto.com/ois/./../,'>http://xpto.com/ois/./../, ele vai-te automaticamente levar para http://xpto.com/

Dá para desactivar isso? (É que eu não tenho interesse nengum em qeu isso aconteça...)

No entanto, não deixa de ser errado estares a redireccionar para xpto.com//ois/

Eu acho que o $1 é em relação ao que está depois do ola.exemplo.com/adeus/.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Dá para desactivar isso? (É que eu não tenho interesse nengum em qeu isso aconteça...)

Não tens???

Tu estás a falar da segunda rewritecond, eu tou a falar da 1a.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

Tu estás a falar da segunda rewritecond, eu tou a falar da 1a.

Ahhhhhhhhhhhhhhhhhhhh, bem me parecia que algo não estava bem aqui, tu é que tás a confundir o people todo...

A última rewriterule embora funcione, não está correcta. Ele vai matchar /blablabla e vai redireccionar para www.adeus.com//blablabla, repara nas 2 /.

Não tens???

Não, eu quero passar tudo exactamente igual.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Ahhhhhhhhhhhhhhhhhhhh, bem me parecia que algo não estava bem aqui, tu é que tás a confundir o people todo...

My bad then.

Não, eu quero passar tudo exactamente igual.

Posso perguntar porquê?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

Imagina que quero usar o mod_rewrite para fazer umas urls amigaveis e essa url tem duas barras, como por exemplo as imagens do hdd...

adeus.com//fnds//imagem//1 ---> passava para ---> www.adeus.com/fnds/imagem/1

mas eu queria que não se modificasse.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

URL amigável é diferente. Fazes "redirect" apenas local para um script php controlador. Se não tiveres nenhum handler para isso, aí sim, o httpd vai-te fazer a estrutura correcta para o URI.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

Tás a confundir tudo...

Imagina que eu tenho um site implementado com 100K links do género adeus.ola.com//imagens//fds e comprei um dominio www.adeus.com, eu só quero que o utilizador quando for redirectionado o link se mantanha tal e qual:

adeus.ola.com//imagens//fds ---> www.adeus.com//imagens//fds

As URLs amigáveis já é com o servidor www.adeus.com.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

Rui Carlos, foi só um exemplo, eu disse URL amigável porque é o nome que dou à "tecnologia".

Voltando ao problema, dá para manter o url sem alterações?

adeus.ola.com//imagens//fds ---> www.adeus.com//imagens//fds

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

No entanto, não deixa de ser errado estares a redireccionar para xpto.com//ois/

Fiz agora o teste e tu estás errado, em relação aos dois, como eu tenho está 100% correcto.

Não devias de afirmar tanto uma coisa sem teres a certeza de que estás correcto.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
djthyrax    11
djthyrax

Eu não estou a confundir, tu é que ainda não percebeste como funciona. :D E não, eu não estou errado.

A correcção do URI apenas existe quando não usas qualquer rewriterule ou redirect. Ou seja, a correcção do /lulz/./..///ois/ para /ois/ existe quando fazes o pedido a adeus.com mas sim em www.adeus.com e apenas se não usares também aí nenhuma rewriterule. Se não tiveres nenhuma rewriterule nem nenhum handler para esse URI, o apache vai procurar o ficheiro no filesystem, e faz sanitizing ao URI para não sair do documentroot do httpd/vhost.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

Eu não estou a confundir, tu é que ainda não percebeste como funciona. :D E não, eu não estou errado.

A correcção do URI apenas existe quando não usas qualquer rewriterule ou redirect. Ou seja, a correcção do /lulz/./..///ois/ para /ois/ existe quando fazes o pedido a adeus.com mas sim em www.adeus.com e apenas se não usares também aí nenhuma rewriterule. Se não tiveres nenhuma rewriterule nem nenhum handler para esse URI, o apache vai procurar o ficheiro no filesystem, e faz sanitizing ao URI para não sair do documentroot do httpd/vhost.

Eu estava-me a referir a isto (se calhar não exclareci este ponto):

A última rewriterule embora funcione, não está correcta. Ele vai matchar /blablabla e vai redireccionar para www.adeus.com//blablabla, repara nas 2 /.

e toda a discussão consequente, eu como tenho não redirecciono para www.adeus.com//blablabla, e para ver se redireccionava ou não, eu tirei uma barra e ele redireccionou para www.adeus.comblablabla.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade