Me gustaría configurar mis URL correctamente evitando hacerlo como el ejemplo a continuación, ya que afecta mi indexación de Google:
urls.py (forma incorrecta):
url(r'^virtual-reality/$', views.virtualreality, name="virtual-reality"), url(r'^virtual-reality$', views.virtualreality, name="virtual-reality"), url(r'^vr/$', views.virtualreality, name="virtual-reality"), url(r'^vr$', views.virtualreality, name="virtual-reality"), Como puede ver, me gustaría vr/ , vr , virtual-reality/ , virtual-reality para redirigir a la misma página. Tengo más de 30 URL en mi sitio y hacer cada redirección de URL como esta es problemático ya que la estructura crece.
No uso Apache en mi sitio de Django, por lo que no se pueden crear reglas de reescritura. (Estoy en pythonanywhere (servidor web: Gunicorn))
¿Cuál es la mejor manera de redirigir todos los tipos de alias en la misma vista sin afectar la indexación de mi búsqueda de Google y evitar ingresar cada URL con la misma vista a urls.py?
La mejor manera de hacerlo es usar la aplicación de redirección de django https://docs.djangoproject.com/en/1.10/ref/contrib/redirects/ , puede administrar fácilmente las redirecciones desde el administrador con esto.
Otra forma de resolver el problema de la barra inclinada final es usar ? bandera en la expresión regular.
url(r'^virtual-reality/?$', views.virtualreality, name="virtual-reality"), url(r'^vr/?$', views.virtualreality, name="virtual-reality"),Si usa CommonMiddleware, agrega la barra inclinada final y devuelve la vista con ella (si la versión sin la barra inclinada final no se encuentra en ningún patrón de URL). Se puede ver en la documentación .
urls.py es Python después de todo Simplemente escriba una estructura de datos adecuada que pueda capturar lo que desea y use un bucle para generar la lista que contiene las llamadas url() desde eso.