-
Notifications
You must be signed in to change notification settings - Fork 16
Description
Several 3rd party libs rely on arguments such as foo.css?hash=60abbfc70f76d949a785a65742f2a3628c9fe006 or materialdesignicons-webfont.ttf?v=5.8.55. Most often a trick to allow caching (by a CDN or fileserver), but refresh the cache when a new version is rolled out.
devserver then gives an error: Could not find file: /home/redacted/css/fonts/materialdesignicons-webfont.woff2?v=5.8.55
When I create that file, e.g. by adding as symlink, it gets served:

While this "hack" works, it requires changes to the source-code that I'd rather not make.
Ideally, for me, this would work as follows:
When requesting /foo.html?bar=baz
- If a file
foo.html?bar=bazexists, serve that. - If no exact file exists, serve
foo.html
This way, a static site that is stored from e.g. crawling/mirroring can be served, preserving url-arguments. But in many development-cases, we can ignore any url-arguments and serve the assets and files without the url-arguments.
Some edge-cases to ignore, or consider:
- How to deal with
/foo.html?name=elmo&species=monsterversus/foo.html?species=monster&name=elmo. - How to deal with
/foo.html?name=elmo&species=monsterwhen a file/foo.html?name=elmoexists. - How to treat URL-encoded:
/foo.html?name=e%26bmust it match the file/foo.html?name=e&b?
If this is considered a good feature, I'll try to make a PR that implements the simple version. And if an edge-case is considered crucial, I'll try to include that too.