Redirección de una Pagina Web sin enviar a los Visitantes al Login o a la Selección de la Base de Datos
Un problema que Ćŗltimamente eh notado en Odoo, es al momento de activar los Portales Web y tener MĆŗltiples Bases de Datos, normalmente envĆa a los visitantes a la selección de la Base de Datos y cuando redireccionamos el trafico de un dominio a nuestro servidor Web, este siempre es enviado directamente al login y no a la pagina Web, bueno esto puede resolverse de muchas formas, utilizando subdominios, reverse proxy con nginx y muchas mas, a mi parecer todas eran un poco complejas y necesitaban muchos pasos, me di a la tarea de pensar un poco y modificar el mĆ©todo principal de re direccionamiento de odoo, el cual se encuentra en:
path_addons_odoo/web/controller/main.py
Podemos modificar este archivo con vim, vi, nano, gedit, sublime text, brackets o cualquier editor, simplemente debemos ir al metodo llamado
def_login_redirect().
Debemos comentar el metodo quedando de la siguiente forma:
#def login_redirect():
# url = '/web/login?'
# # built the redirect url, keeping all the query parameters of the url
# redirect_url = '%s?%s' % (request.httprequest.base_url, werkzeug.urls.url_encode(request.params))
# return """<html><head><script>
# window.location = '%sredirect=' + encodeURIComponent("%s" + location.hash);
# </script></head></html>
# """ % (url, redirect_url)
Modificamos el mƩtodo quedando de la siguiente manera:
def login_redirect():
return """<html><head><script>
window.location = '%sredirect=' + encodeURIComponent("%s" + location.hash);
</script></head></html>
""" % ('/?db=Mi_Base_de_Datos', '')
Notemos que al final solo debemos enviar la Base a la que se enviara a los visitantes, esta tambiƩn debera contener nuestra pagina Web.
Si vamos a redireccionar el trafico de un dominio externo hacia nuestro servidor Odoo, este debe ser redireccionado de la siguiente manera:
http://odoo.poncesoft.net:8069/?db=Mi_Base_de_Datos&web
El valor Mi_Base_de_Datos corresponde a la misma base a la que redireccionamos el mƩtodo
login_redirect()
Nota: Cada uno de los valores para el redireccionamiento de nuestra aplicación, dependerÔ de la instalación de nuestro Servidor Odoo y si utilizamos un servidor Web como Nginx, Apache, etc. o la ejecución nativa de Odoo.