You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							118 lines
						
					
					
						
							4.2 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							118 lines
						
					
					
						
							4.2 KiB
						
					
					
				| <IfModule mod_headers.c> | |
|   <IfModule mod_setenvif.c> | |
|     <IfModule mod_fcgid.c> | |
|        SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1 | |
|        RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION | |
|     </IfModule> | |
|     <IfModule mod_proxy_fcgi.c> | |
|        SetEnvIfNoCase Authorization "(.+)" HTTP_AUTHORIZATION=$1 | |
|     </IfModule> | |
|     <IfModule mod_lsapi.c> | |
|       SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1 | |
|       RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION | |
|     </IfModule> | |
|   </IfModule> | |
| 
 | |
|   <IfModule mod_env.c> | |
|     # Add security and privacy related headers | |
| 
 | |
|     # Avoid doubled headers by unsetting headers in "onsuccess" table, | |
|     # then add headers to "always" table: https://github.com/nextcloud/server/pull/19002 | |
|     Header onsuccess unset Referrer-Policy | |
|     Header always set Referrer-Policy "no-referrer" | |
| 
 | |
|     Header onsuccess unset X-Content-Type-Options | |
|     Header always set X-Content-Type-Options "nosniff" | |
| 
 | |
|     Header onsuccess unset X-Frame-Options | |
|     Header always set X-Frame-Options "SAMEORIGIN" | |
| 
 | |
|     Header onsuccess unset X-Permitted-Cross-Domain-Policies | |
|     Header always set X-Permitted-Cross-Domain-Policies "none" | |
| 
 | |
|     Header onsuccess unset X-Robots-Tag | |
|     Header always set X-Robots-Tag "noindex, nofollow" | |
| 
 | |
|     Header onsuccess unset X-XSS-Protection | |
|     Header always set X-XSS-Protection "1; mode=block" | |
| 
 | |
|     SetEnv modHeadersAvailable true | |
|   </IfModule> | |
| 
 | |
|   # Add cache control for static resources | |
|   <FilesMatch "\.(css|js|mjs|svg|gif|png|jpg|webp|ico|wasm|tflite)$"> | |
|     <If "%{QUERY_STRING} =~ /(^|&)v=/"> | |
|       Header set Cache-Control "max-age=15778463, immutable" | |
|     </If> | |
|     <Else> | |
|       Header set Cache-Control "max-age=15778463" | |
|     </Else> | |
|   </FilesMatch> | |
| 
 | |
|   # Let browsers cache OTF and WOFF files for a week | |
|   <FilesMatch "\.(otf|woff2?)$"> | |
|     Header set Cache-Control "max-age=604800" | |
|   </FilesMatch> | |
| </IfModule> | |
| 
 | |
| <IfModule mod_php.c> | |
|   php_value mbstring.func_overload 0 | |
|   php_value default_charset 'UTF-8' | |
|   php_value output_buffering 0 | |
|   <IfModule mod_env.c> | |
|     SetEnv htaccessWorking true | |
|   </IfModule> | |
| </IfModule> | |
| 
 | |
| <IfModule mod_mime.c> | |
|   AddType image/svg+xml svg svgz | |
|   AddType application/wasm wasm | |
|   AddEncoding gzip svgz | |
|   # Serve ESM javascript files (.mjs) with correct mime type | |
|   AddType text/javascript js mjs | |
| </IfModule> | |
| 
 | |
| <IfModule mod_dir.c> | |
|   DirectoryIndex index.php index.html | |
| </IfModule> | |
| 
 | |
| <IfModule pagespeed_module> | |
|   ModPagespeed Off | |
| </IfModule> | |
| 
 | |
| <IfModule mod_rewrite.c> | |
|   RewriteEngine on | |
|   RewriteCond %{HTTP_USER_AGENT} DavClnt | |
|   RewriteRule ^$ /remote.php/webdav/ [L,R=302] | |
|   RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}] | |
|   RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L] | |
|   RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L] | |
|   RewriteRule ^remote/(.*) remote.php [QSA,L] | |
|   RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L] | |
|   RewriteRule ^\.well-known/(?!acme-challenge|pki-validation) /index.php [QSA,L] | |
|   RewriteRule ^ocm-provider/?$ index.php [QSA,L] | |
|   RewriteRule ^(?:\.(?!well-known)|autotest|occ|issue|indie|db_|console).* - [R=404,L] | |
| </IfModule> | |
| 
 | |
| # Clients like xDavv5 on Android, or Cyberduck, use chunked requests. | |
| # When FastCGI or FPM is used with apache, requests arrive to Nextcloud without any content. | |
| # This leads to the creation of empty files. | |
| # The following directive will force the problematic requests to be buffered before being forwarded to Nextcloud. | |
| # This way, the "Transfer-Encoding" header is removed, the "Content-Length" header is set, and the request content is proxied to Nextcloud. | |
| # Here are more information about the issue: | |
| #  - https://docs.cyberduck.io/mountainduck/issues/fastcgi/ | |
| #  - https://docs.nextcloud.com/server/latest/admin_manual/issues/general_troubleshooting.html#troubleshooting-webdav | |
| <IfModule mod_setenvif.c> | |
|   SetEnvIf Transfer-Encoding "chunked" proxy-sendcl=1 | |
| </IfModule> | |
| 
 | |
| # Apache disabled the sending of the server-side content-length header | |
| # in their 2.4.59 patch updated which breaks some use-cases in Nextcloud. | |
| # Setting ap_trust_cgilike_cl allows to bring back the usual behaviour. | |
| # See https://bz.apache.org/bugzilla/show_bug.cgi?id=68973 | |
| <IfModule mod_env.c> | |
|   SetEnv ap_trust_cgilike_cl | |
| </IfModule> | |
| 
 | |
| AddDefaultCharset utf-8 | |
| Options -Indexes
 |