next.js - structure de répertoire du site exporté
en espérant qu'un magicien Next.js puisse m'aider, ou du moins me dire franchement si ce n'est pas possible.
Nous avons un site qui est compilé dans des fichiers statiques. Ceux-ci seront desservis à partir de S3.
Lorsque j'exécute next export
, tout se construit correctement, mais j'avais espéré pouvoir accéder directement aux sous-pages sans ajouter l'extension.html. J'ai supposé (à tort) que les pages suivantes étaient construites dans des répertoires et j'ai déposé un index.html dans ce répertoire.
La configuration côté développement est assez simple. Chaque composant a un répertoire, par exemple "some-component", avec un index.js qui exporte le composant nommé à partir d'un fichier adjacent comme "some-component.js".
Tout cela fonctionne si je commence à la racine du site - je peux naviguer vers, par exemple, /components/some-component sans me soucier de l'extension.
Next a créé un some-component
répertoire, mais le fichier à l'intérieur s'appelle toujours some-component.html. Donc, si je clique sur cette URL depuis le navigateur, il s'agit évidemment de 404.
Existe-t-il un moyen d'obtenir ensuite des fichiers index.html dans les répertoires, afin que la navigation directe dans le répertoire (essayez de le dire après un verre) fonctionne ? Ou suis-je en train d'aboyer le mauvais arbre?
Je sais qu'il existe d'autres solutions à cela, en particulier pour s3, mais j'ai pensé que cela valait la peine de poser des questions.
Acclamations!
Solution du problème
Next.js a un trailingSlash
paramètre qui devrait fonctionner pour vous :
// next.config.js
module.exports = {
trailingSlash: true,
}
Lorsque ce paramètre est true
, et en utilisant quelque chose comme ./pages/products/shoes.jsx
comme exemple, un répertoire nommé d'après le .jsx
fichier ( shoes
) est créé et ce .jsx
fichier devient alors un index.html
fichier à l'intérieur de ce répertoire, c'est-à-dire href="/products/shoes/"
. Votre serveur enverra ce chemin index.html
(ou peut être configuré s'il ne le fait pas déjà) même s'il index.html
n'est pas spécifié dans le fichier href
.
Commentaires
Enregistrer un commentaire