es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Redirija todas las solicitudes sin “www” a “www” en Bottle-Py.

Quiero realizar una redirección 301 para todas las solicitudes con un host diferente al identificado como canónico.

Algo como lo siguiente, sin replicarlo en cada ruta:

CANONICAL_HOST = 'www.example.com'
@app.route('/')
def home():    
    if request.urlparts.netloc != CANONICAL_HOST:
        redirect_url = request.urlparts._replace(netloc=CANONICAL_HOST).geturl()
        return redirect(redirect_url, 301)
    ...
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para emitir una redirección 301 para todas las solicitudes con un host diferente al identificado como el canónico, puedes seguir estos pasos:

    1. Define el host canónico como una constante. Por ejemplo:
    CANONICAL_HOST = 'www.example.com'
    
    1. En cada ruta donde desees hacer cumplir el host canónico, verifica si el atributo netloc de la solicitud coincide con el host canónico. Si no lo hace, reemplaza el atributo netloc del objeto urlparts de la solicitud con el host canónico y redirige a la nueva URL utilizando la función redirect con el código de estado 301. Por ejemplo:
    from bottle import redirect, request, route
    
    @route('/')
    def home():
        if request.urlparts.netloc != CANONICAL_HOST:
            redirect_url = request.urlparts._replace(netloc=CANONICAL_HOST).geturl()
            return redirect(redirect_url, 301)
        # ...
    

    Este fragmento de código utiliza el atributo urlparts del objeto de solicitud para acceder a los diversos componentes de la URL, como el nombre del host (netloc). Luego, construye una nueva URL reemplazando el componente netloc con el host canónico utilizando el método _replace del namedtuple devuelto por urlparse. Finalmente, emite una redirección 301 a la nueva URL utilizando la función redirect.

    Puedes utilizar este enfoque en todas tus rutas que necesiten hacer cumplir el host canónico sin duplicar el código en cada una de ellas.

Comments are closed.