Jump to content
Sign in to follow this  
djthyrax

[Resolvido] .htaccess (Apache)

Recommended Posts

djthyrax

Boas.

Tenho um problema em mãos que sinto poder ser resolvido por um .htaccess. Ora, pegando no domínio exemplo.com, www.exemplo.com passa a ser ola.exemplo.com. O meu problema é que eu quero redireccionar todos os pedidos www.exemplo.com para ola.exemplo.com, mas, qd o path é www.exemplo.com/ola/qq coisa, quero redireccionar para ola.exemplo.com/qq coisa.

Como posso fazer isto? (Nunca mexi em nada que possa envolver .htaccess, e preciso disto com urgência.)

Cumps. :P


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!

Share this post


Link to post
Share on other sites
djthyrax

Thanks. Pegando no teu código,

RedirectMatch ^/ola/(.+?)$ http://ola.exemplo.com/$1

Isto funcionaria para os /ola/qq coisa.

Agora, o caso torna-se um pouco mais complicado.

Imaginemos isto:

www.exemplo.com/ola -> ola.exemplo.com

www.exemplo.com/wiki -> não redireccionar

www.exemplo.com/outra coisa qq -> sub.exemplo.com/outra coisa qq

Como fazer isto? Ou seja, redireccionar tudo excepto o que está debaixo de /wiki?


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!

Share this post


Link to post
Share on other sites
Nazgulled

Só para não estar a dar exemplos que não servem para nada, explica-me o seguinte:

Deste o exemplo do subdomínio "ola", óbvio que isto é um exemplo. Mas o que tu pretendes fazer é apenas para um subdomínio ou para todos excepto o wiki? Ou seja:

www.exemplo.com/abc -> abc.exemplo.com

www.exemplo.com/naz -> naz.exemplo.com

www.exemplo.com/djthyraxsucks -> djthyraxsucks.exemplo.com

É isto que queres, exceptuando o subdomínio wiki? Ou apenas queres que um único subdomínio seja redireccionado?

É que eu não percebi bem o último exemplo... e o que era suposto fazer.

Share this post


Link to post
Share on other sites
djthyrax

Tipo, eu quero que ele redireccione tudo excepto aquilo o que eu indicar que não, ou seja, a wiki não redirecciona.

EDIT: aqui fica um desenho:

463282Sem título.png


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!

Share this post


Link to post
Share on other sites
Nazgulled

Era preciso uma imagem para isso? :P De qualquer forma continuaste sem responder à minha pergunta...

Se queres que apenas o "ola" seja redireccionado fazes:

RedirectMatch ^/ola/(.+?)$ http://ola.exemplo.com/$1'>http://ola.exemplo.com/$1 (como mostraste no teu post anterior)

Redirect / http://ola.exemplo.com

Mas se quiseres para qualquer "palavra", tens de fazer como disse antes:

RedirectMatch ^/(.+?)/(.+?)$ http://$1.exemplo.com/$2

Redirect / http://ola.exemplo.com

Só para ter a certeza que percebeste isto...

Quanto à cena do wiki pode ser mais complicado ou não. Se o que tu queres é apenas uma "palavra" ou várias especificas e não queres que sejam todas (que é o que a expressão regular faz) fazes desta forma:

RedirectMatch ^/ola/(.+?)$ http://ola.exemplo.com/$1'>http://ola.exemplo.com/$1

RedirectMatch ^/[^wiki]/? http://ola.exemplo.com

EDIT:

Aliás, se tu queres mesmo apenas o "ola" e negar o redireccionamento do "wiki" ate podes fazer assim:

Redirect /ola http://ola.exemplo.com

RedirectMatch ^/[^wiki]/? http://ola.exemplo.com

Share this post


Link to post
Share on other sites
djthyrax

RedirectMatch ^/ola/(.+?)$ http://ola.exemplo.com/$1

RedirectMatch ^/[^wiki]/? http://ola.exemplo.com/$1

Com isto, se eu meter:

Em relação à 1ª regra, www.exemplo.com/ola/ ele redirecciona para ola.exemplo.com/. All good.

Em relação à segunda, www.exemplo.com/lolada ele redirecciona para ola.exemplo.com/lolada, www.exemplo.com/lolada/lolz/lix para ola.exemplo.com/lolada/lolz/lix e www.exemplo.com/wiki fica na mesma, tal como www.exemplo.com/wiki/ola.

Certo?


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!

Share this post


Link to post
Share on other sites
Nazgulled

Ya, em principio. Não testei para o caso www.exemplo.com/wiki/ola, mas penso que funciona...

Share this post


Link to post
Share on other sites
djthyrax

Desculpa, mas crashei o PC e não editei a msg. Depois de ver o teu edit, aquilo parece-me funcionar para o que eu quero desde que redireccione o /ola/ e não redireccione o que tiver /wiki/*. No futuro, posso querer adicionar mais excepcções, como o posso fazer?


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!

Share this post


Link to post
Share on other sites
Nazgulled

Já vi que não pescas nada de expressões regulares :P Fazes algo como:

[^wiki|^shit|^outra]

O '^' dentro de [] nega o que vier a seguir. E o '|' é tipo um "ou". Esclarecido?

EDIT:

O que eu disse acima está completamente errado!

Share this post


Link to post
Share on other sites
djthyrax

Já vi que não pescas nada de expressões regulares :P Fazes algo como:

[^wiki|^shit|^outra]

O '^' dentro de [] nega o que vier a seguir. E o '|' é tipo um "ou". Esclarecido?

Sir, yes sir. Se soubesse expressões regulares não passava a vida a fazer explode() :)

Obrigado, depois dou notícias sobre isto. :)


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!

Share this post


Link to post
Share on other sites
djthyrax

Depois vou tentar assim:

Redirect /ola http://ola.nazgulled.net

RedirectRule ^(/?)$ index.php # <- isto é para uma cena que não mencionei.

RedirectMatch  ^/(?!wiki($|/)|outras($|/))(.+?)$ http://ola.nazgulled.net/$1

Obrigado ao Nazgulled e ao pcaldeira. :P


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!

Share this post


Link to post
Share on other sites
fnds

Para não criar um novo post.....

Pegando no site www.exemplo.com, eu queria criar um sistema de urls limpas, ou seja, se eu escrever www.exemplo.com/imagens/1, eu quero que o server execute o ficheiro index.php/imagens/1, não quero redirectionar...

Share this post


Link to post
Share on other sites
djthyrax

Ele quer redireccionar internamente /imagens/1 para, por exemplo, processar.php?uri=/imagens/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!

Share this post


Link to post
Share on other sites
pedrotuga

fnds3000

Isto deve funcionar:

RewriteRule ^(.*) index.php/$1

DICA:

google->mod_rewrite tutorial

é mais simples do que parece

PS: cool thread

Share this post


Link to post
Share on other sites
fnds

Sim é isso, já tinha resolvido o problema, mas ainda não tinha o postado aqui, já posto aqui o codigo........

Edit:

Options -Indexes
Options +FollowSymLinks
<IfModule mod_php5.c>
php_value register_globals                0
php_value session.auto_start              0
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
        RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} !^/theme/(style/|js/|images/)
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

Vamos á explicação:

1ªlinha - Não permite ver as directorias

2ªlinha - Se o mod_php5 está activo......

2ªlinha - ....Desactiva as variáveis globais.....

3ªlinha - ....deswactiva o session auto start

5ªlinha - se o mod_rewrite está activo.....

6ªlinha - ...enicia o rewite Engine

7ªlinha - ...define o directorio base

8ªlinha - ...se o requeste uri é um ficheiro e....

9ªlinha - ...está na directoria /theme/js/ | /theme/css/ | /theme/images/ pára aqui e mostra o ficheiro, se não....

10ªlinha - ....redirecciona internamente para index.php?q=

ou seja, num simples código consigo proteger as directorias e os ficheiros que estão lá dentro e criar uma página de ERRO 404,

ex1:www.example.com/fnds3000 -> redirecciona internamente -> www.example.com/index.php?q=fnds3000

ex2:www.example.com/theme/images/banner.jpg ->se o ficheiro existir mostra-o, se não redirectiona ->www.example.com/index.php?q=theme/images/banner.jpg

e estava eu todo contente, quando me surgiu um problema com as codificações da uri, o firefox por predefinição codifica em utf-8, enquanto o opera codifica em ISO-8859-1,:

http://www.example.com/O+P%C3%A1ssaro/ca%C3%A7ou/um+r%C3%A9ptil%21/  _utf-8  _firefox  _nao funciona

http://www.example.com/O+Passaro/ca%C3%A7ou/um+r%C3%A9ptil%21/  _utf-8  _firefox  _funciona

http://www.example.com/O+P%E1ssaro/ca%E7ou/um+r%E9ptil%21/  _ISO-8859-1  _opera  _funciona

no primeiro caso o apache simplesmente ignora o ficheiro .htaccess, alguém sabe qual é o problema?

Share this post


Link to post
Share on other sites
pedrotuga

Não percebi o problema, mas os urls devem ser codificados com uma coisa estilo urlencode. Está aí qq coisa que não percebo, um 'á' passa a ser um 'a' ?!? esquisito.

Share this post


Link to post
Share on other sites
djthyrax

Giro giro, era tu mostrares os headers de cada request para vermos o que pode estar a causar isso.


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!

Share this post


Link to post
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
Sign in to follow this  

×
×
  • 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.