generator-razor 13.4.7 → 13.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,695 @@
1
+ # ------------------------------------------------------------------------------
2
+ # | Local development (Docker) |
3
+ # ------------------------------------------------------------------------------
4
+
5
+ <FilesMatch \.php$>
6
+ SetHandler proxy:fcgi://php84:9000
7
+ </FilesMatch>
8
+
9
+ # ------------------------------------------------------------------------------
10
+ # | Local development (MAMP) |
11
+ # ------------------------------------------------------------------------------
12
+
13
+ # <IfModule mod_mime.c>
14
+ # RemoveHandler .php
15
+ # RemoveType .php
16
+ # <FilesMatch ".+\.php$">
17
+ # AddHandler php-fastcgi .php
18
+ # </FilesMatch>
19
+ # </IfModule>
20
+
21
+ # ------------------------------------------------------------------------------
22
+ # | TYPO3 application context |
23
+ # ------------------------------------------------------------------------------
24
+
25
+ # SetEnv TYPO3_CONTEXT Development
26
+
27
+ # ------------------------------------------------------------------------------
28
+ # | Maintenance mode |
29
+ # ------------------------------------------------------------------------------
30
+
31
+ # <IfModule mod_rewrite.c>
32
+ # RewriteEngine on
33
+ # RewriteCond %{REMOTE_HOST} !^111\.222\.333\.444
34
+ # RewriteCond %{HTTP:X-FORWARDED-FOR} !^111\.222\.333\.444
35
+ # RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
36
+ # RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
37
+ # # RewriteRule (IP) /x%{HTTP:X-FORWARDED-FOR}x [R,L]
38
+ # RewriteRule .* /maintenance.html [R=302,L]
39
+ # </IfModule>
40
+
41
+ # ------------------------------------------------------------------------------
42
+ # | Browserupdate |
43
+ # ------------------------------------------------------------------------------
44
+
45
+ RewriteCond %{HTTP_USER_AGENT} "Mozilla.*Gecko.*Firefox/([1-9]|[1-2][0-9])[^0-9]" [NC,OR]
46
+ RewriteCond %{HTTP_USER_AGENT} "^Firefox[\/\s]([1-9]|[1-2][0-9])[^0-9]" [NC,OR]
47
+ RewriteCond %{HTTP_USER_AGENT} "AppleWebKit.*Version\/[1-8]\.[0-9\.]*\ Safari" [NC,OR]
48
+ RewriteCond %{HTTP_USER_AGENT} "AppleWebKit.*Version\/[1-8]\.[0-9\.]*\ Mobile\/[A-z0-9]+\ Safari" [NC,OR]
49
+ RewriteCond %{HTTP_USER_AGENT} (MSIE|Trident) [NC]
50
+ RewriteRule .* browser-support.html [L]
51
+
52
+ # ----------------------------------------------------------------------
53
+ # | Keep alive |
54
+ # ----------------------------------------------------------------------
55
+
56
+ <IfModule mod_headers.c>
57
+ Header set Connection keep-alive
58
+ </IfModule>
59
+
60
+ # ----------------------------------------------------------------------
61
+ # | Vary |
62
+ # ----------------------------------------------------------------------
63
+
64
+ <IfModule mod_headers.c>
65
+ <FilesMatch ".(js|css|xml|gz|html)$">
66
+ Header append Vary: Accept-Encoding
67
+ </FilesMatch>
68
+ </IfModule>
69
+
70
+ # ----------------------------------------------------------------------
71
+ # | Enforce trailing slash. Ignore trailing slash on file endings |
72
+ # ----------------------------------------------------------------------
73
+
74
+ # <IfModule mod_rewrite.c>
75
+ # RewriteBase /
76
+ # RewriteCond %{REQUEST_FILENAME} !-f
77
+ # RewriteCond %{REQUEST_FILENAME} !-d
78
+ # RewriteCond %{REQUEST_URI} !(.*)/$
79
+ # RewriteCond %{REQUEST_FILENAME} !\.(gif|jpg|png|jpeg|css|js|xml|rss|json|txt|yaml|yml)$ [NC]
80
+ # RewriteCond %{REQUEST_URI} !\.(gif|jpg|png|jpeg|css|js|xml|rss|json|txt|yaml|yml)$ [NC]
81
+ # RewriteRule ^(.*[^/])$ /$1/ [L,R=301]
82
+ # </IfModule>
83
+
84
+ # ----------------------------------------------------------------------
85
+ # | webp support |
86
+ # ----------------------------------------------------------------------
87
+
88
+ # <IfModule mod_rewrite.c>
89
+ # RewriteEngine On
90
+ # RewriteCond %{HTTP_ACCEPT} image/webp
91
+ # RewriteCond %{DOCUMENT_ROOT}/$1.$3.webp -f
92
+ # RewriteRule ^((fileadmin|other-storage)/.+)\.(png|jpg|jpeg)$ $1.$3.webp [L]
93
+ # </IfModule>
94
+
95
+ # <IfModule mod_headers.c>
96
+ # Header append Vary Accept env=REDIRECT_accept
97
+ # </IfModule>
98
+
99
+ # ----------------------------------------------------------------------
100
+ # | Forcing the `www.` at the beginning of URLs |
101
+ # ----------------------------------------------------------------------
102
+
103
+ # RewriteCond %{HTTP_HOST} ^mywebsite\.com$ [NC]
104
+ # RewriteRule ^(.*)$ http://www\.mywebsite\.com/$1 [R=301,L]
105
+
106
+ # ----------------------------------------------------------------------
107
+ # | No `www.` at the beginning of URLs |
108
+ # ----------------------------------------------------------------------
109
+
110
+ # RewriteCond %{HTTP_HOST} ^www\.subdomain\.mywebsite\.com [NC]
111
+ # RewriteRule ^(.*)$ http://subdomain\.mywebsite\.com/$1 [R=301,L]
112
+
113
+ # ----------------------------------------------------------------------
114
+ # | Forcing `https://` |
115
+ # ----------------------------------------------------------------------
116
+
117
+ # Redirect from the `http://` to the `https://` version of the URL.
118
+ # https://wiki.apache.org/httpd/RewriteHTTPToHTTPS
119
+
120
+ #<IfModule mod_rewrite.c>
121
+ # RewriteEngine On
122
+ # RewriteCond %{HTTPS} !=on
123
+ # RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
124
+ # RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
125
+ #</IfModule>
126
+
127
+ # ----------------------------------------------------------------------
128
+ # | TYPO3 |
129
+ # ----------------------------------------------------------------------
130
+
131
+ #####
132
+ #
133
+ # Example .htaccess file for TYPO3 CMS - for use with Apache Webserver
134
+ #
135
+ # This file includes settings for the following configuration options:
136
+ #
137
+ # - Compression
138
+ # - Caching
139
+ # - MIME types
140
+ # - Cross Origin requests
141
+ # - Rewriting and Access
142
+ # - Miscellaneous
143
+ # - PHP optimisation
144
+ #
145
+ # If you want to use it, you have to copy it to the root folder of your TYPO3 installation (if its
146
+ # not there already) and rename it to '.htaccess'. To make .htaccess files work, you might need to
147
+ # adjust the 'AllowOverride' directive in your Apache configuration file.
148
+ #
149
+ # IMPORTANT: You may need to change this file depending on your TYPO3 installation!
150
+ # Consider adding this file's content to your webserver's configuration directly for speed improvement
151
+ #
152
+ # Lots of the options are taken from https://github.com/h5bp/html5-boilerplate/blob/master/dist/.htaccess
153
+ #
154
+ ####
155
+
156
+
157
+ ### Begin: Compression ###
158
+
159
+ <IfModule http2_module>
160
+ Protocols h2 http/1.1
161
+ </IfModule>
162
+
163
+ # Optional: enable pre-compressed asset delivery
164
+ AddEncoding gzip .gz
165
+ AddType "text/javascript" .js.gz
166
+ AddType "text/css" .css.gz
167
+ <FilesMatch "\.(js|css)\.gz$">
168
+ ForceType text/plain
169
+ Header set Content-Encoding gzip
170
+ </FilesMatch>
171
+
172
+ <IfModule mod_deflate.c>
173
+ # Force compression for mangled `Accept-Encoding` request headers
174
+ <IfModule mod_setenvif.c>
175
+ <IfModule mod_headers.c>
176
+ SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
177
+ RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
178
+ </IfModule>
179
+ </IfModule>
180
+
181
+ # Compress all output labeled with one of the following media types.
182
+ #
183
+ # (!) For Apache versions below version 2.3.7 you don't need to
184
+ # enable `mod_filter` and can remove the `<IfModule mod_filter.c>`
185
+ # and `</IfModule>` lines as `AddOutputFilterByType` is still in
186
+ # the core directives.
187
+ #
188
+ # https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype
189
+
190
+ <IfModule mod_filter.c>
191
+ AddOutputFilterByType DEFLATE application/atom+xml \
192
+ application/javascript \
193
+ application/json \
194
+ application/ld+json \
195
+ application/manifest+json \
196
+ application/rdf+xml \
197
+ application/rss+xml \
198
+ application/schema+json \
199
+ application/vnd.geo+json \
200
+ application/geo+json \
201
+ application/vnd.ms-fontobject \
202
+ application/x-font-ttf \
203
+ application/x-javascript \
204
+ application/x-web-app-manifest+json \
205
+ application/xhtml+xml \
206
+ application/xml \
207
+ font/eot \
208
+ font/opentype \
209
+ font/otf \
210
+ font/ttf \
211
+ image/bmp \
212
+ image/svg+xml \
213
+ image/vnd.microsoft.icon \
214
+ image/x-icon \
215
+ text/cache-manifest \
216
+ text/css \
217
+ text/html \
218
+ text/javascript \
219
+ text/plain \
220
+ text/vcard \
221
+ text/vnd.rim.location.xloc \
222
+ text/vtt \
223
+ text/x-component \
224
+ text/x-cross-domain-policy \
225
+ text/xml
226
+ </IfModule>
227
+
228
+ <IfModule mod_mime.c>
229
+ AddEncoding gzip svgz
230
+ </IfModule>
231
+ </IfModule>
232
+
233
+ ### End: Compression ###
234
+
235
+
236
+
237
+ ### Begin: Browser caching of resource files ###
238
+
239
+ # This affects Frontend and Backend and increases performance.
240
+ <IfModule mod_expires.c>
241
+
242
+ ExpiresActive On
243
+ ExpiresDefault "access plus 1 month"
244
+
245
+ ExpiresByType text/css "access plus 1 year"
246
+
247
+ ExpiresByType application/json "access plus 0 seconds"
248
+ ExpiresByType application/ld+json "access plus 0 seconds"
249
+ ExpiresByType application/schema+json "access plus 0 seconds"
250
+ ExpiresByType application/vnd.geo+json "access plus 0 seconds"
251
+ ExpiresByType application/geo+json "access plus 0 seconds"
252
+ ExpiresByType application/xml "access plus 0 seconds"
253
+ ExpiresByType text/xml "access plus 0 seconds"
254
+
255
+ ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
256
+ ExpiresByType image/x-icon "access plus 1 week"
257
+
258
+ ExpiresByType text/x-component "access plus 1 month"
259
+
260
+ ExpiresByType text/html "access plus 0 seconds"
261
+
262
+ ExpiresByType application/javascript "access plus 1 year"
263
+ ExpiresByType application/x-javascript "access plus 1 year"
264
+ ExpiresByType text/javascript "access plus 1 year"
265
+
266
+ ExpiresByType application/manifest+json "access plus 1 week"
267
+ ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
268
+ ExpiresByType text/cache-manifest "access plus 0 seconds"
269
+
270
+ ExpiresByType audio/ogg "access plus 1 month"
271
+ ExpiresByType image/apng "access plus 1 month"
272
+ ExpiresByType image/avif "access plus 1 month"
273
+ ExpiresByType image/avif-sequence "access plus 1 month"
274
+ ExpiresByType image/bmp "access plus 1 year"
275
+ ExpiresByType image/gif "access plus 1 year"
276
+ ExpiresByType image/jpeg "access plus 1 year"
277
+ ExpiresByType image/jxl "access plus 1 month"
278
+ ExpiresByType image/png "access plus 1 year"
279
+ ExpiresByType image/svg+xml "access plus 1 month"
280
+ ExpiresByType image/webp "access plus 1 month"
281
+ ExpiresByType video/mp4 "access plus 1 month"
282
+ ExpiresByType video/ogg "access plus 1 month"
283
+ ExpiresByType video/webm "access plus 1 month"
284
+
285
+ ExpiresByType application/atom+xml "access plus 1 hour"
286
+ ExpiresByType application/rdf+xml "access plus 1 hour"
287
+ ExpiresByType application/rss+xml "access plus 1 hour"
288
+
289
+ ExpiresByType font/collection "access plus 1 month"
290
+ ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
291
+ ExpiresByType font/eot "access plus 1 month"
292
+ ExpiresByType font/opentype "access plus 1 month"
293
+ ExpiresByType font/otf "access plus 1 month"
294
+ ExpiresByType application/x-font-ttf "access plus 1 month"
295
+ ExpiresByType font/ttf "access plus 1 month"
296
+ ExpiresByType application/font-woff "access plus 1 month"
297
+ ExpiresByType application/x-font-woff "access plus 1 month"
298
+ ExpiresByType font/woff "access plus 1 month"
299
+ ExpiresByType application/font-woff2 "access plus 1 month"
300
+ ExpiresByType font/woff2 "access plus 1 month"
301
+
302
+ ExpiresByType text/x-cross-domain-policy "access plus 1 week"
303
+
304
+ </IfModule>
305
+
306
+ ### End: Browser caching of resource files ###
307
+
308
+
309
+ ### Begin: MIME types ###
310
+
311
+ # Proper MIME types for all files
312
+ <IfModule mod_mime.c>
313
+ # Security configuration
314
+ RemoveType .html .htm
315
+ <FilesMatch ".+\.html?$">
316
+ AddType text/html .html .htm
317
+ </FilesMatch>
318
+
319
+ RemoveType .svg .svgz
320
+ <FilesMatch ".+\.svgz?$">
321
+ AddType image/svg+xml .svg .svgz
322
+ </FilesMatch>
323
+
324
+ # Data interchange
325
+ AddType application/atom+xml atom
326
+ AddType application/json json map topojson
327
+ AddType application/ld+json jsonld
328
+ AddType application/rss+xml rss
329
+ AddType application/vnd.geo+json geojson
330
+ AddType application/xml rdf xml
331
+
332
+ # JavaScript
333
+ AddType application/javascript js mjs
334
+
335
+ # Manifest files
336
+ AddType application/manifest+json webmanifest
337
+ AddType application/x-web-app-manifest+json webapp
338
+ AddType text/cache-manifest appcache
339
+
340
+ # Media files
341
+
342
+ AddType audio/mp4 f4a f4b m4a
343
+ AddType audio/ogg oga ogg opus
344
+ AddType image/avif avif
345
+ AddType image/avif-sequence avifs
346
+ AddType image/bmp bmp
347
+ AddType image/jxl jxl
348
+ AddType image/webp webp
349
+ AddType video/mp4 f4v f4p m4v mp4
350
+ AddType video/ogg ogv
351
+ AddType video/webm webm
352
+ AddType video/x-flv flv
353
+ AddType image/x-icon cur ico
354
+
355
+ # Web fonts
356
+ AddType font/woff woff
357
+ AddType font/woff2 woff2
358
+ AddType application/vnd.ms-fontobject eot
359
+ AddType font/ttf ttc ttf
360
+ AddType font/otf otf
361
+
362
+ # Other
363
+ AddType application/octet-stream safariextz
364
+ AddType application/x-bb-appworld bbaw
365
+ AddType application/x-chrome-extension crx
366
+ AddType application/x-opera-extension oex
367
+ AddType application/x-xpinstall xpi
368
+ AddType text/vcard vcard vcf
369
+ AddType text/vnd.rim.location.xloc xloc
370
+ AddType text/vtt vtt
371
+ AddType text/x-component htc
372
+
373
+ </IfModule>
374
+
375
+ # UTF-8 encoding
376
+ AddDefaultCharset utf-8
377
+ <IfModule mod_mime.c>
378
+ AddCharset utf-8 .atom .css .js .json .manifest .rdf .rss .vtt .webapp .webmanifest .xml
379
+ </IfModule>
380
+
381
+ ### End: MIME types ###
382
+
383
+
384
+
385
+ ### Begin: Cross Origin ###
386
+
387
+ # Send the CORS header for images when browsers request it.
388
+ <IfModule mod_setenvif.c>
389
+ <IfModule mod_headers.c>
390
+ <FilesMatch "\.(avifs?|bmp|cur|gif|ico|jpe?g|png|svgz?|webp)$">
391
+ SetEnvIf Origin ":" IS_CORS
392
+ Header set Access-Control-Allow-Origin "*" env=IS_CORS
393
+ </FilesMatch>
394
+ </IfModule>
395
+ </IfModule>
396
+
397
+ # Allow cross-origin access to web fonts.
398
+ <IfModule mod_headers.c>
399
+ <FilesMatch "\.(eot|otf|tt[cf]|woff2?)$">
400
+ Header set Access-Control-Allow-Origin "*"
401
+ </FilesMatch>
402
+ </IfModule>
403
+
404
+ ### End: Cross Origin ###
405
+
406
+ ### Begin: StaticFileCache (preparation) ####
407
+
408
+ # Document root configuration
409
+ RewriteRule .* - [E=SFC_ROOT:%{DOCUMENT_ROOT}]
410
+ # RewriteRule .* - [E=SFC_ROOT:%{DOCUMENT_ROOT}/t3site] # Example if your installation is installed in a directory
411
+ # NOTE: There are cases (apache versions and configuration) where DOCUMENT_ROOT do not exists. Please set the SFC_ROOT to the right directory without DOCUMENT_ROOT then!
412
+
413
+ # Cleanup URI
414
+ RewriteCond %{REQUEST_URI} ^.*$
415
+ RewriteRule .* - [E=SFC_URI:/%{REQUEST_URI}]
416
+ RewriteCond %{REQUEST_URI} ^/.*$
417
+ RewriteRule .* - [E=SFC_URI:%{REQUEST_URI}]
418
+ RewriteCond %{REQUEST_URI} ^/?$
419
+ RewriteRule .* - [E=SFC_URI:/]
420
+
421
+ # Cleanup HOST
422
+ RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$
423
+ RewriteRule .* - [E=SFC_HOST:%1]
424
+
425
+ # Disable cache for EXT:solr indexing requests
426
+ RewriteCond %{HTTP:X-Tx-Solr-Iq} .+
427
+ RewriteRule .* - [E=SFC_HOST:invalid-host]
428
+
429
+ # Get scheme
430
+ RewriteRule .* - [E=SFC_PROTOCOL:http]
431
+ RewriteCond %{SERVER_PORT} ^443$ [OR]
432
+ RewriteCond %{HTTP:X-Forwarded-Proto} https
433
+ RewriteRule .* - [E=SFC_PROTOCOL:https]
434
+
435
+ # Get port
436
+ RewriteRule .* - [E=SFC_PORT:80]
437
+ RewriteCond %{ENV:SFC_PROTOCOL} ^https$ [NC]
438
+ RewriteRule .* - [E=SFC_PORT:443]
439
+ RewriteCond %{SERVER_PORT} ^[0-9]+$
440
+ RewriteRule .* - [E=SFC_PORT:%{SERVER_PORT}]
441
+ RewriteCond %{HTTP:X-Forwarded-Port} ^[0-9]+$
442
+ RewriteRule .* - [E=SFC_PORT:%{HTTP:X-Forwarded-Port}]
443
+
444
+ # Full path for redirect
445
+ RewriteRule .* - [E=SFC_FULLPATH:typo3temp/tx_staticfilecache/%{ENV:SFC_PROTOCOL}_%{ENV:SFC_HOST}_%{ENV:SFC_PORT}%{ENV:SFC_URI}/index]
446
+
447
+ # Extension (Order: br, gzip, default)
448
+ RewriteRule .* - [E=SFC_EXT:]
449
+ RewriteCond %{HTTP:Accept-Encoding} br [NC]
450
+ RewriteRule .* - [E=SFC_EXT:.br]
451
+ RewriteCond %{ENV:SFC_ROOT}/%{ENV:SFC_FULLPATH}%{ENV:SFC_EXT} !-f
452
+ RewriteRule .* - [E=SFC_EXT:]
453
+ RewriteCond %{ENV:SFC_EXT} ^$
454
+ RewriteCond %{HTTP:Accept-Encoding} gzip [NC]
455
+ RewriteRule .* - [E=SFC_EXT:.gz]
456
+ RewriteCond %{ENV:SFC_EXT} ^\.gz$
457
+ RewriteCond %{ENV:SFC_ROOT}/%{ENV:SFC_FULLPATH}%{ENV:SFC_EXT} !-f
458
+ RewriteRule .* - [E=SFC_EXT:]
459
+
460
+ # Write Extension to SFC_FULLPATH
461
+ RewriteRule .* - [E=SFC_FULLPATH:%{ENV:SFC_FULLPATH}%{ENV:SFC_EXT}]
462
+
463
+ ### Begin: StaticFileCache (main) ####
464
+
465
+ # We only redirect URI's without query strings
466
+ RewriteCond %{QUERY_STRING} ^$
467
+
468
+ # It only makes sense to do the other checks if a static file actually exists.
469
+ RewriteCond %{ENV:SFC_ROOT}/%{ENV:SFC_FULLPATH} -f
470
+
471
+ # NO frontend or backend user is logged in. Logged in users may see different
472
+ # information than anonymous users. But the anonymous version is cached. So
473
+ # don't show the anonymous version to logged in users.
474
+ RewriteCond %{HTTP_COOKIE} !staticfilecache [NC]
475
+
476
+ # We only redirect GET requests
477
+ RewriteCond %{REQUEST_METHOD} GET
478
+
479
+ # Rewrite the request to the static file.
480
+ RewriteRule .* %{ENV:SFC_ROOT}/%{ENV:SFC_FULLPATH} [L]
481
+
482
+ # Do not allow direct call the cache entries
483
+ RewriteCond %{ENV:SFC_URI} ^/typo3temp/tx_staticfilecache/.*
484
+ RewriteCond %{ENV:REDIRECT_STATUS} ^$
485
+ RewriteRule .* - [F,L]
486
+
487
+ # Handle application cache
488
+ RewriteCond %{REQUEST_FILENAME} !-f
489
+ RewriteCond %{REQUEST_FILENAME} !-d
490
+ RewriteCond %{REQUEST_FILENAME} !-l
491
+ RewriteRule ^.*\.sfc$ %{ENV:CWD}index.php?eID=sfc_manifest [QSA,L]
492
+
493
+ ### Begin: StaticFileCache (options) ####
494
+
495
+ # Set proper content type and encoding for gzipped html.
496
+ <FilesMatch "\.gzip$">
497
+ SetEnv no-gzip 1
498
+ SetEnv no-brotli 1
499
+ <IfModule mod_headers.c>
500
+ Header set Content-Encoding gzip
501
+ </IfModule>
502
+ </FilesMatch>
503
+ <FilesMatch "\.gz$">
504
+ SetEnv no-gzip 1
505
+ SetEnv no-brotli 1
506
+ <IfModule mod_headers.c>
507
+ Header set Content-Encoding gzip
508
+ </IfModule>
509
+ </FilesMatch>
510
+ <FilesMatch "\.br$">
511
+ SetEnv no-gzip 1
512
+ SetEnv no-brotli 1
513
+ <IfModule mod_headers.c>
514
+ Header set Content-Encoding br
515
+ </IfModule>
516
+ </FilesMatch>
517
+
518
+ # if there are same problems with ForceType, please try the AddType alternative
519
+ # Set proper content type gzipped html
520
+ <FilesMatch "\.gzip$">
521
+ ForceType text/html
522
+ # AddType "text/html" .gzip
523
+ </FilesMatch>
524
+ <FilesMatch "\.js\.gzip$">
525
+ ForceType text/javascript
526
+ # AddType "text/javascript" .gzip
527
+ </FilesMatch>
528
+ <FilesMatch "\.css\.gzip$">
529
+ ForceType text/css
530
+ # AddType "text/css" .gzip
531
+ </FilesMatch>
532
+ <FilesMatch "\.xml\.gzip$">
533
+ ForceType text/xml
534
+ # AddType "text/xml" .gzip
535
+ </FilesMatch>
536
+ <FilesMatch "\.rss\.gzip$">
537
+ ForceType text/xml
538
+ # AddType "text/xml" .gzip
539
+ </FilesMatch>
540
+ <FilesMatch "\.gz$">
541
+ ForceType text/html
542
+ # AddType "text/html" .gz
543
+ </FilesMatch>
544
+ <FilesMatch "\.js\.gz$">
545
+ ForceType text/javascript
546
+ # AddType "text/javascript" .gzip
547
+ </FilesMatch>
548
+ <FilesMatch "\.css\.gz$">
549
+ ForceType text/css
550
+ # AddType "text/css" .gzip
551
+ </FilesMatch>
552
+ <FilesMatch "\.xml\.gz$">
553
+ ForceType text/xml
554
+ # AddType "text/xml" .gz
555
+ </FilesMatch>
556
+ <FilesMatch "\.rss\.gz$">
557
+ ForceType text/xml
558
+ # AddType "text/xml" .gz
559
+ </FilesMatch>
560
+ <FilesMatch "\.br$">
561
+ ForceType text/html
562
+ # AddType "text/html" .br
563
+ </FilesMatch>
564
+ <FilesMatch "\.xml\.br$">
565
+ ForceType text/xml
566
+ # AddType "text/xml" .br
567
+ </FilesMatch>
568
+ <FilesMatch "\.rss\.br$">
569
+ ForceType text/xml
570
+ # AddType "text/xml" .br
571
+ </FilesMatch>
572
+
573
+ # Avoid .br files being delivered with Content-Language: br headers
574
+ <IfModule mod_mime.c>
575
+ RemoveLanguage .br
576
+ </IfModule>
577
+
578
+ ### End: StaticFileCache ###
579
+
580
+
581
+ ### Begin: Rewriting and Access ###
582
+
583
+ # You need rewriting, if you use a URL-Rewriting extension (RealURL, CoolUri).
584
+
585
+ <IfModule mod_rewrite.c>
586
+
587
+ # Enable URL rewriting
588
+ RewriteEngine On
589
+
590
+ # Store the current location in an environment variable CWD to use
591
+ # mod_rewrite in .htaccess files without knowing the RewriteBase
592
+ RewriteCond $0#%{REQUEST_URI} ([^#]*)#(.*)\1$
593
+ RewriteRule ^.*$ - [E=CWD:%2]
594
+
595
+ # Rules to set ApplicationContext based on hostname
596
+ #RewriteCond %{HTTP_HOST} ^dev\.example\.com$
597
+ #RewriteRule .? - [E=TYPO3_CONTEXT:Development]
598
+ #RewriteCond %{HTTP_HOST} ^staging\.example\.com$
599
+ #RewriteRule .? - [E=TYPO3_CONTEXT:Production/Staging]
600
+ #RewriteCond %{HTTP_HOST} ^www\.example\.com$
601
+ #RewriteRule .? - [E=TYPO3_CONTEXT:Production]
602
+
603
+ # Rule for versioned static files, configured through:
604
+ # - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename']
605
+ # - $GLOBALS['TYPO3_CONF_VARS']['FE']['versionNumberInFilename']
606
+ # IMPORTANT: This rule has to be the very first RewriteCond in order to work!
607
+ RewriteCond %{REQUEST_FILENAME} !-f
608
+ RewriteCond %{REQUEST_FILENAME} !-d
609
+ RewriteRule ^(.+)\.(\d+)\.(php|js|mjs|css|png|jpg|gif|svg|avif|webp|gz)$ %{ENV:CWD}$1.$3 [L]
610
+
611
+ # Access block for folders
612
+ RewriteRule _(?:recycler|temp)_/ - [F]
613
+ RewriteRule fileadmin/templates/.*\.(?:txt|ts)$ - [F]
614
+ RewriteRule ^(?:vendor|typo3_src|typo3temp/var) - [F]
615
+ RewriteRule (?:typo3conf/ext|typo3/sysext|typo3/ext)/[^/]+/(?:Configuration|ContentBlocks|Resources/Private|Tests?|Documentation|docs?)/ - [F]
616
+
617
+ # Block access to all hidden files and directories with the exception of
618
+ # the visible content from within the `/.well-known/` hidden directory (RFC 5785).
619
+ RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC]
620
+ RewriteCond %{SCRIPT_FILENAME} -d [OR]
621
+ RewriteCond %{SCRIPT_FILENAME} -f
622
+ RewriteRule (?:^|/)\. - [F]
623
+
624
+ # Stop rewrite processing, if we are in any known directory
625
+ # NOTE: Add your additional local storages here
626
+ RewriteRule ^(?:fileadmin/|typo3conf/|typo3temp/|_assets/) - [L]
627
+
628
+ # If the file/symlink/directory does not exist but is below /typo3/, redirect to the main TYPO3 entry point.
629
+ RewriteCond %{REQUEST_FILENAME} !-f
630
+ RewriteRule ^typo3/(.*)$ %{ENV:CWD}index.php [QSA,L]
631
+
632
+ # If the file/symlink/directory does not exist => Redirect to index.php.
633
+ # For httpd.conf, you need to prefix each '%{REQUEST_FILENAME}' with '%{DOCUMENT_ROOT}'.
634
+ RewriteCond %{REQUEST_FILENAME} !-f
635
+ RewriteCond %{REQUEST_FILENAME} !-d
636
+ RewriteCond %{REQUEST_FILENAME} !-l
637
+ RewriteRule ^.*$ %{ENV:CWD}index.php [QSA,L]
638
+
639
+ </IfModule>
640
+
641
+ # Access block for files
642
+ # Apache < 2.3
643
+ <IfModule !mod_authz_core.c>
644
+ <FilesMatch "(?i:^\.|^#.*#|^(?:ChangeLog|ToDo|Readme|License)(?:\.md|\.txt)?|^composer\.(?:json|lock)|^ext_conf_template\.txt|^ext_typoscript_constants\.txt|^ext_typoscript_setup\.txt|flexform[^.]*\.xml|locallang[^.]*\.(?:xml|xlf)|\.(?:bak|co?nf|cfg|neon|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql(?:\..*)?|sqlite(?:\..*)?|sw[op]|git.*|rc)|.*~)$"> Order allow,deny
645
+ Deny from all
646
+ Satisfy All
647
+ </FilesMatch>
648
+ </IfModule>
649
+ # Apache ≥ 2.3
650
+ <IfModule mod_authz_core.c>
651
+ <If "%{REQUEST_URI} =~ m#(?i:/\.|/\x23.*\x23|/(?:ChangeLog|ToDo|Readme|License)(?:\.md|\.txt)?|/composer\.(?:json|lock)|/ext_conf_template\.txt|/ext_typoscript_constants\.txt|/ext_typoscript_setup\.txt|flexform[^.]*\.xml|locallang[^.]*\.(?:xml|xlf)|\.(?:bak|co?nf|cfg|neon|ya?ml|ts|typoscript|tsconfig|dist|fla|in[ci]|log|sh|sql(?:\..*)?|sqlite(?:\..*)?|sw[op]|git.*|rc)|.*~)$#">
652
+ Require all denied
653
+ </If>
654
+ </IfModule>
655
+
656
+ # Block access to vcs directories
657
+ <IfModule mod_alias.c>
658
+ RedirectMatch 404 /\.(?:git|svn|hg)/
659
+ </IfModule>
660
+
661
+ ### End: Rewriting and Access ###
662
+
663
+
664
+
665
+ ### Begin: Miscellaneous ###
666
+
667
+ # 404 error prevention for non-existing redirected folders
668
+ Options -MultiViews
669
+
670
+ # Make sure that directory listings are disabled.
671
+ <IfModule mod_autoindex.c>
672
+ Options -Indexes
673
+ </IfModule>
674
+
675
+ <IfModule mod_headers.c>
676
+ # Force IE to render pages in the highest available mode
677
+ Header set X-UA-Compatible "IE=edge"
678
+ <FilesMatch "\.(appcache|avifs?|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svgz?|ttf|vcf|webapp|webm|webp|woff2?|xml|xpi)$">
679
+ Header unset X-UA-Compatible
680
+ </FilesMatch>
681
+
682
+ # Reducing MIME type security risks
683
+ Header set X-Content-Type-Options "nosniff"
684
+ </IfModule>
685
+
686
+ # ETag removal
687
+ <IfModule mod_headers.c>
688
+ Header unset ETag
689
+ </IfModule>
690
+ FileETag None
691
+
692
+ ### End: Miscellaneous ###
693
+
694
+
695
+ # Add your own rules here.