mirror of
https://github.com/bitechdev/ResolveSpec.git
synced 2026-05-21 19:45:33 +00:00
feat(staticweb): enhance fallback logic for extensionless paths
Some checks failed
Build , Vet Test, and Lint / Run Vet Tests (1.23.x) (push) Failing after -35m7s
Build , Vet Test, and Lint / Run Vet Tests (1.24.x) (push) Failing after -35m7s
Build , Vet Test, and Lint / Lint Code (push) Failing after -35m7s
Build , Vet Test, and Lint / Build (push) Failing after -35m7s
Tests / Unit Tests (push) Failing after -35m8s
Tests / Integration Tests (push) Failing after -35m8s
Some checks failed
Build , Vet Test, and Lint / Run Vet Tests (1.23.x) (push) Failing after -35m7s
Build , Vet Test, and Lint / Run Vet Tests (1.24.x) (push) Failing after -35m7s
Build , Vet Test, and Lint / Lint Code (push) Failing after -35m7s
Build , Vet Test, and Lint / Build (push) Failing after -35m7s
Tests / Unit Tests (push) Failing after -35m8s
Tests / Integration Tests (push) Failing after -35m8s
* Added support for serving index.html for extensionless paths * Updated isStaticAsset to exclude paths without extensions from static asset checks
This commit is contained in:
@@ -75,11 +75,21 @@ func (m *mountPoint) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
fallbackPath := m.fallbackStrategy.GetFallbackPath(filePath)
|
fallbackPath := m.fallbackStrategy.GetFallbackPath(filePath)
|
||||||
file, err = m.provider.Open(strings.TrimPrefix(fallbackPath, "/"))
|
file, err = m.provider.Open(strings.TrimPrefix(fallbackPath, "/"))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// Successfully opened fallback file
|
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
m.serveFile(w, r, fallbackPath, file)
|
m.serveFile(w, r, fallbackPath, file)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// For extensionless paths, also try path/index.html
|
||||||
|
if path.Ext(filePath) == "" {
|
||||||
|
indexFallback := path.Join(filePath, "index.html")
|
||||||
|
file, err = m.provider.Open(strings.TrimPrefix(indexFallback, "/"))
|
||||||
|
if err == nil {
|
||||||
|
defer file.Close()
|
||||||
|
m.serveFile(w, r, indexFallback, file)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// No fallback or fallback failed - return 404
|
// No fallback or fallback failed - return 404
|
||||||
|
|||||||
@@ -49,9 +49,15 @@ func (f *HTMLFallbackStrategy) GetFallbackPath(filePath string) string {
|
|||||||
return f.indexFile
|
return f.indexFile
|
||||||
}
|
}
|
||||||
|
|
||||||
// isStaticAsset checks if the path looks like a static asset (has a file extension).
|
// isStaticAsset checks if the path looks like a static asset (has a non-HTML file extension).
|
||||||
|
// Paths with no extension are not considered static assets so fallback logic can resolve
|
||||||
|
// them to path.html or path/index.html.
|
||||||
func (f *HTMLFallbackStrategy) isStaticAsset(filePath string) bool {
|
func (f *HTMLFallbackStrategy) isStaticAsset(filePath string) bool {
|
||||||
return path.Ext(filePath) != ""
|
ext := strings.ToLower(path.Ext(filePath))
|
||||||
|
if ext == "" || ext == ".html" || ext == ".htm" {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExtensionBasedFallback implements a fallback strategy that skips fallback for known static file extensions.
|
// ExtensionBasedFallback implements a fallback strategy that skips fallback for known static file extensions.
|
||||||
|
|||||||
Reference in New Issue
Block a user