Issue #263
Consertar redirecionamento para perfis com domínio próprio
http://dominio/identificador deve redirecionar para o domínio próprio quando disponível (ou seja, deve redirecionar para http://dominioproprio ao invés de http://dominioproprio/identificador).
-
@caiosba, testando local to observando que atualmente http://dominioproprio/ sempre leva para http://dominioproprio/profile/identificador. O desejado é que http://dominioproprio/identificador então também vá para http://dominioproprio/profile/identificador ?
-
#match requests for profiles that don't have a custom domain match ':profile(/*page)', controller: 'content_viewer', action: 'view_page', profile: /#{Noosfero.identifier_format_in_url}/i, constraints: EnvironmentDomainConstraint.new, via: :all
Nesse caso retirar a restrição dessa rota acima ia fazer o match funcionar tambem para quem dominio proprio, e ter o comportamento que descrevi.
-
O desejado é que http://dominio/identificador vá para o perfil.
Exemplo:
http://softwarelivre.org/phls -> retorna 404 mas deveria redirecionar para http://phls.com.br/, mas hoje redireciona para http://phls.com.br/phls (o que é redundante).
-
ele vai para o perfil, mas a url fica http://dominioproprio/profile/identifier
-
Reassigned to @marcosronaldo
-
@marcosronaldo você está fazendo essa?
-
Vou retomar no fim da tarde.
-
@marcosronaldo @thiago a ideia é que o link para a home page de um perfil funcione independente do perfil ter domínio próprio ou não.
Por exemplo:
A url http://softwarelivre.org/profile/reisl leva para a página do meu perfil (ou seja, a página com meu mural e dados do perfil). Como eu não tenho nenhum blog/pasta/conteúdo definido como minha homepage, a url http://softwarelivre.org/reisl leva também para a mesma página do meu perfil (ou seja, redireciona para http://softwarelivre.org/profile/reisl).
Já no caso de terceiro, que tem o blog como homepage, http://softwarelivre.org/terceiro leva para essa homepage e não para a página de perfil (http://softwarelivre.org/profile/terceiro).
Agora veja o caso de alguém com domínio próprio quando eu tento acessar o perfil a partir do domínio da rede (nesse caso http://softwarelivre.org/) :
- No caso da página de perfil, funciona como esperado: http://softwarelivre.org/profile/phls redireciona para http://phls.com.br/profile/phls, que é a página do perfil.
- Mas http://softwarelivre.org/phls (que levaria para a homepage) redireciona para http://phls.com.br/phls, que não existe. O que queremos é que http://softwarelivre.org/phls redirecione para http://phls.com.br/ que é a homepage. Ou seja, queremos que o mesmo comportamento de redirecionamento da página de perfil funcione também para a homepage.
Você teria duas formas de fazer isso: ou fazer com que o noosfero reconheça que http://phls.com.br/phls existe e é a homepage do perfil de Paulo Santana, ou fazer http://softwarelivre.org/phls redirecionar direto para http://phls.com.br/ no lugar de http://phls.com.br/phls. Só analisando o código para ver qual forma seria a mais correta/simples de implementar.
Qualquer dúvida entre em contato comigo ou @caiosba
-
@larissareis enviei um MR, eu resolvi pelo routes.rb e verifiquei da seguinte forma:
- Coloquei um dominio em uma comunidade ex: foo
- Vi que quando voce tenta foo/comunidade a pagina não existe, agora localhost/comunidade ele redireciona certo
- Corrigi via rota, assim quando ele tiver um dominio setado ele redireciona assim:
- se tiver localhost/comunidade e ela tiver um dominio ela vai para o dominio dela (via redirect 301) ( se não tiver nada setado como homepage ele vai para o /profile/comunidade)
- se eu tentar a url dominio/comunidade ele redireciona (301) para o dominio ( se não tiver nada setado como homepage ele vai para o dominio/profile/comunidade)
O merge é: https://gitlab.com/noosfero/noosfero/merge_requests/881
-
@thiago acho que ainda não ficou claro o que a gente quer com essa issue. No exemplo que você deu, o correto seria que http://localhost/foo redirecionasse para http://domain, assumindo que foo é o identificador da comunidade. A url http://dominio/comunidade ou http://localhost/comunidade não deve redirecionar para nada (de novo assumindo que o identificador é foo), inclusive, de preferência, http://domain/foo também não precisa redirecionar.
Me dê ping no irc para a gente discutir melhor.
-
Status changed to closed
-
Esse problema se mostrou mais complicado de resolver do que o esperado, então vamos contornar a nossa necessidade de uso desse redirecionamento e fechar essa issue.
Para registro, o redirecionamento para domínio próprio é feito em
lib/needs_profile.rb
em#load_profile
:profile_hostname = @profile.hostname if profile_hostname && profile_hostname != request.host params.delete(:profile) redirect_to(Noosfero.url_options.merge(params).merge(:host => profile_hostname)) end
E esse redirecionamento, apesar de não haver nenhum profile, dá match na rota:
# match requests for profiles that don't have a custom domain match ':profile(/*page)', controller: 'content_viewer', action: 'view_page', profile: /#{Noosfero.identifier_format_in_url}/i, constraints: EnvironmentDomainConstraint.new, via: :all