Solución:
Necesitarás usar Jekyll.
Copia textual de la documentación pertinente:
A veces es bueno obtener una vista previa de su sitio Jekyll antes de presionar su
gh-pages
rama a GitHub. Sin embargo, la estructura de URL similar a un subdirectorio que usa GitHub para las páginas del proyecto complica la resolución adecuada de las URL. Aquí hay un enfoque para utilizar la estructura de URL de la página del proyecto de GitHub (username.github.io/project-name/
) mientras mantiene la capacidad de obtener una vista previa de su sitio Jekyll localmente.
En
_config.yml
, selecciona elbaseurl
opción a/project-name
– observe la barra inclinada inicial y la ausencia de una barra inclinada final.Al hacer referencia a archivos JS o CSS, hágalo así:
{{ site.baseurl}}/path/to/css.css
– observe la barra que sigue inmediatamente a la variable (justo antes de “ruta”).Al hacer enlaces permanentes o enlaces internos, hágalo así:
{{ site.baseurl }}{{ post.url }}
– tenga en cuenta que no hay barra inclinada entre las dos variables.Finalmente, si desea obtener una vista previa de su sitio antes de comprometerse / implementar usando
jekyll serve
, asegúrese de pasar una cadena vacía al--baseurl
opción, para que pueda ver todo en
localhost:4000
normalmente (sin / project-name al principio):
jekyll serve --baseurl ''
De esta manera, puede obtener una vista previa de su sitio localmente desde la raíz del sitio en localhost, pero cuando GitHub genera sus páginas desde el
gh-pages
rama todas las URL comenzarán con/project-name
y resolver correctamente.
(Aparentemente, alguien descubrió esto hace solo unos meses).
¿Qué navegador estás usando? ¿Estás seguro de que esto pasa? Porque no debería. Si incluye una URL relativa en un enlace, se resolverá en relación con la URL del documento que contiene el enlace. En otras palabras, cuando incluye
<link href="https://foroayuda.es/assets/css/common.css" rel="stylesheet">
en un documento HTML en http://www.foo.com/bar/doc.html
, el enlace a assets/css/common.css
se resolverá agregándolo al prefijo de la URL del documento HTML sin la última parte de la ruta (sin doc.html
), es decir, el enlace se resolverá http://www.foo.com/bar/assets/css/common.css
, No a http://www.foo.com/assets/css/common.css
como afirmas.
Por ejemplo, vea la fuente de la página web de Twitter Bootstrap: http://twitter.github.io/bootstrap/. Observe los enlaces de estilo en la parte superior, especificados como <link href="https://foroayuda.es/assets/css/bootstrap.css" rel="stylesheet">
. Ese vínculo se resuelve correctamente http://twitter.github.io/bootstrap/assets/css/bootstrap.css
, es decir, incluye el nombre del repositorio.
Podrías poner esto
<base href="https://foroayuda.es/[repo]/">
dentro de la <head>
etiqueta, y resuelve el problema.
También puede mejorar esta solución configurando:
<base href="https://foroayuda.es/{{site.baseurl}}" />
y luego establecer site.baseurl
a cadena vacía para la prueba local.