lukeed / sirv

An optimized middleware & CLI application for serving static files~!
MIT License
1.06k stars 56 forks source link

Support for "." in pathnames #132

Open patrikpessi opened 2 years ago

patrikpessi commented 2 years ago

Problem

I have a single page app with routes to specific versions of documents

Example path from my app: /documents/:documentName/:version/:langVariant Example match for the path: /documents/document1/1.8.3/en

Sirv chokes on the . character and throws a 404 thinking that everything after the last period is a file extension.

Suggestion

Changing the regex on line: 136 in package/sirv/index.js from

ignores.push(/[/]([A-Za-z\s\d~$._-]+\.\w+){1,}$/); // any extn

to something around the lines of

ignores.push(/[/]([A-Za-z\s\d~$._-]+\.[\w]+)[^.\d(?=\/\n)]{1,}$/); // any extn

seems to work for this.

Matches for the suggested regex:

Matches:
/style.js
/assets/style.js
/assets/fonts/font.ttf
/assets/zip/files.7zip

Doesnt match:
/documents/1.8.3/en
/documents/1.2.3
/documents/1317983