Перейти http.Handle () не работает, как ожидалось.404 файл не найден - PullRequest
0 голосов
/ 20 февраля 2019

Итак, я пытаюсь заставить CSS работать, используя мой Go сервер, но файл css загружается неправильно, я получаю 404 file not found.Он прекрасно работает, когда я запускаю Index.html прямо из браузера.

Моя структура каталогов: # представляет папку и - файл:

- Main.go
# static
    - index.html
    # css
       - Styles.css

Index.html содержит:

<link rel="stylesheet" type="text/css" href="css/Styles.css"/>

Это все мои обработчики:

muxRouter := mux.NewRouter()
muxRouter.HandleFunc("/", basicHandler)
muxRouter.HandleFunc("/ws", wsHandler)
muxRouter.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("static/css"))))

basicHandler содержит:

toSend := template.HTMLEscapeString(outputMessage)
toSend = strings.Replace(toSend, "\n", "<br>", -1)

templateError := allTemplates.ExecuteTemplate(responseWriter, "index.html", template.HTML(toSend))
if templateError != nil {
    log.Fatal("Template error: ", templateError)
}

wsHandler обрабатывает веб-сокет, который использует моя программа.

1 Ответ

0 голосов
/ 20 февраля 2019

Я бы посоветовал переместить ваши файлы следующим образом (обратите внимание, что я переименовал index.html в нижний регистр - поэтому он будет загружаться по умолчанию при посещении корневого URL-адреса документа):

Main.go
static/
static/index.html
static/css/Styles.css

, изменить index.htmlчтобы обратиться к более метко названному каталогу css:

<link rel="stylesheet" type="text/css" href="css/Styles.css"/>

РЕДАКТИРОВАТЬ: обновить, чтобы приспособиться к gorilla / mux.

H / T к этому ответу .

package main

import (
        "github.com/gorilla/mux"
        "log"
        "net/http"
)

func main() {
        r := mux.NewRouter()

        r.PathPrefix("/css/").Handler(
                http.StripPrefix("/css/", http.FileServer(http.Dir("static/css/"))),
        )   

        err := http.ListenAndServe(":8080", r)
        if err != nil {
                log.Fatal(err)
        }   

        // curl 'localhost:8080/css/Styles.css'
        // <style> ...  </style>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...