diff --git a/common/templates/_helpers.tpl b/common/templates/_helpers.tpl
index e54df5ed3ae61e30512f7950d1950b7233a21e6d..21964133729f477dfc64081297906a05bdfdafc8 100644
--- a/common/templates/_helpers.tpl
+++ b/common/templates/_helpers.tpl
@@ -112,3 +112,27 @@ TLSStore
 - secretName: {{ $secretName }}
 {{- end }}
 {{- end }}
+
+{{/*
+Middlewares
+*/}}
+
+{{/*
+RedirectScheme
+*/}}
+
+{{- define "common.traefik.middlewares.redirectscheme.variables.spec" -}}
+{{- $redirectScheme := dict }}
+{{- $scheme := "https" }}
+{{- $permanent := true }}
+{{- if .Values.scheme }}
+{{- $scheme = .Values.scheme }}
+{{- end }}
+{{- if hasKey .Values "permanent" }}
+{{- $permanent = .Values.permanent }}
+{{- end }}
+{{- $redirectScheme := merge $redirectScheme (dict "scheme" $scheme) }}
+{{- $redirectScheme := merge $redirectScheme (dict "permanent" $permanent) }}
+{{- $spec := dict "redirectScheme" $redirectScheme }}
+{{- toYaml $spec }}
+{{- end }}
diff --git a/common/templates/traefik/_middleware.tpl b/common/templates/traefik/_middleware.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..0e19acc21045da56a00036f773078cb053e6ead9
--- /dev/null
+++ b/common/templates/traefik/_middleware.tpl
@@ -0,0 +1,16 @@
+# https://doc.traefik.io/traefik/middlewares/overview/
+{{- define "common.traefik.middleware" }}
+apiVersion:  {{ .Values.apiVersion | default "traefik.io/v1alpha1" }}
+kind: Middleware
+metadata:
+  name: {{ .Values.name | default "middleware" }}
+  {{- with .Values.annotations }}
+  annotations:
+    {{- toYaml . | nindent 4 }}
+  {{- end }}
+  labels:
+    {{- include "common.variables.labels" . | nindent 4 }}
+spec:
+  {{- .spec | default .Values.spec | toYaml | nindent 2 }}
+---
+{{- end }}
diff --git a/common/templates/traefik/middlewares/_redirectscheme.tpl b/common/templates/traefik/middlewares/_redirectscheme.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..a0f6729027152f1210ca8950e57d4c94ceca5b6e
--- /dev/null
+++ b/common/templates/traefik/middlewares/_redirectscheme.tpl
@@ -0,0 +1,5 @@
+# https://doc.traefik.io/traefik/middlewares/overview/
+{{- define "common.traefik.middlewares.redirectscheme" }}
+{{ include "common.traefik.middleware" (merge $ (dict "spec" (include "common.traefik.middlewares.redirectscheme.variables.spec" . | fromYaml))) }}
+---
+{{- end }}
diff --git a/example/templates/traefik/redirectscheme.yaml b/example/templates/traefik/redirectscheme.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..89e26c172b8a33000fd6d3e61c6c1831f6680f72
--- /dev/null
+++ b/example/templates/traefik/redirectscheme.yaml
@@ -0,0 +1,3 @@
+{{- if .Values.redirectscheme }}
+{{ include "common.traefik.middlewares.redirectscheme" (dict "Values" .Values.redirectscheme "Chart" .Chart "Release" .Release) }}
+{{- end }}
diff --git a/example/values.yaml b/example/values.yaml
index 072d49723bef395c7ae8fc14b6acf28d4a78ddc3..7db7a36324ad601b8f66a5ec6c59cd4c9947a767 100644
--- a/example/values.yaml
+++ b/example/values.yaml
@@ -86,3 +86,7 @@ ingressroutetcp: # All options: https://doc.traefik.io/traefik/routing/providers
       services:
         - name: example-service
           port: 8080
+
+redirectscheme:
+  permanent: true # default value
+  scheme: https # default value