Maison  >  Article  >  développement back-end  >  Comment supprimer l'extension .html des URL de votre serveur HTTP Go ?

Comment supprimer l'extension .html des URL de votre serveur HTTP Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 03:19:31761parcourir

How to Remove the .html Extension from URLs in Your Go HTTP Server?

Supprimer l'extension .html à l'aide d'un système de fichiers personnalisé

Pour éviter d'afficher l'extension .html dans les URL, une approche consiste à implémenter le Interface http.FileSystem utilisant http.Dir. Cette solution exploite le code robuste de http.FileServer.

Pour implémenter cela, créez un type personnalisé qui intègre http.Dir :

<code class="go">type HTMLDir struct {
    d http.Dir
}</code>

Modifiez la fonction principale pour utiliser ce système de fichiers personnalisé au lieu de http.FileServer :

<code class="go">func main() {
    fs := http.FileServer(HTMLDir{http.Dir("public/")})
    http.Handle("/", http.StripPrefix("/", fs))
    http.ListenAndServe(":8000", nil)
}</code>

Ensuite, définissez la méthode Open pour le type HTMLDir. Cette méthode détermine comment le système de fichiers doit gérer les demandes de fichiers.

Toujours utiliser l'extension .html :

<code class="go">func (d HTMLDir) Open(name string) (http.File, error) {
    return d.d.Open(name + ".html")
}</code>

Retour à l'extension .html :

<code class="go">func (d HTMLDir) Open(name string) (http.File, error) {
    f, err := d.d.Open(name)
    if os.IsNotExist(err) {
        if f, err := d.d.Open(name + ".html"); err == nil {
            return f, nil
        }
    }
    return f, err
}</code>

Retour au nom de fichier (sans extension) :

<code class="go">func (d HTMLDir) Open(name string) (http.File, error) {
    f, err := d.d.Open(name + ".html")
    if os.IsNotExist(err) {
        if f, err := d.d.Open(name); err == nil {
            return f, nil
        }
    }
    return f, err
}</code>

En mettant en œuvre les solutions ci-dessus, vous pouvez supprimer efficacement le fichier . extension html à partir des URL lors de l'accès à votre serveur HTTP Go.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn