summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/caddyhttp/matchers.go5
-rw-r--r--modules/caddyhttp/matchers_test.go12
2 files changed, 9 insertions, 8 deletions
diff --git a/modules/caddyhttp/matchers.go b/modules/caddyhttp/matchers.go
index f5f9a0f..fb84875 100644
--- a/modules/caddyhttp/matchers.go
+++ b/modules/caddyhttp/matchers.go
@@ -25,6 +25,7 @@ import (
"path"
"reflect"
"regexp"
+ "runtime"
"sort"
"strconv"
"strings"
@@ -395,7 +396,9 @@ func (m MatchPath) Match(r *http.Request) bool {
// security risk (cry) if PHP files end up being served
// as static files, exposing the source code, instead of
// being matched by *.php to be treated as PHP scripts.
- reqPath = strings.TrimRight(reqPath, ". ")
+ if runtime.GOOS == "windows" { // issue #5613
+ reqPath = strings.TrimRight(reqPath, ". ")
+ }
repl := r.Context().Value(caddy.ReplacerCtxKey).(*caddy.Replacer)
diff --git a/modules/caddyhttp/matchers_test.go b/modules/caddyhttp/matchers_test.go
index 4f5da69..041975d 100644
--- a/modules/caddyhttp/matchers_test.go
+++ b/modules/caddyhttp/matchers_test.go
@@ -21,6 +21,7 @@ import (
"net/http/httptest"
"net/url"
"os"
+ "runtime"
"testing"
"github.com/caddyserver/caddy/v2"
@@ -254,11 +255,6 @@ func TestPathMatcher(t *testing.T) {
expect: true,
},
{
- match: MatchPath{"*.php"},
- input: "/foo/index.php. .",
- expect: true,
- },
- {
match: MatchPath{"/foo/bar.txt"},
input: "/foo/BAR.txt",
expect: true,
@@ -435,8 +431,10 @@ func TestPathMatcher(t *testing.T) {
func TestPathMatcherWindows(t *testing.T) {
// only Windows has this bug where it will ignore
- // trailing dots and spaces in a filename, but we
- // test for it on all platforms to be more consistent
+ // trailing dots and spaces in a filename
+ if runtime.GOOS != "windows" {
+ return
+ }
req := &http.Request{URL: &url.URL{Path: "/index.php . . .."}}
repl := caddy.NewReplacer()