diff --git a/.htaccess_prod b/.htaccess_prod index 2146b88e..c2d506a2 100644 --- a/.htaccess_prod +++ b/.htaccess_prod @@ -1,4 +1,118 @@ -SetEnv TYPO3_CONTEXT "Production" +Deny from 131.221.187.131 +Deny from 47.254.122.100 + +# +###########503-for-Bots########################## +################################################# + +#SetEnvIfNoCase User-Agent "Googlebot" bots +#SetEnvIfNoCase User-Agent "Googlebot-Image" bots +#SetEnvIfNoCase User-Agent "Googlebot-Mobile" bots +#SetEnvIfNoCase User-Agent "Java" bots +#SetEnvIfNoCase User-Agent "UptimeRobot" bots +#SetEnvIfNoCase User-Agent "bingbot" bots +#SetEnvIfNoCase User-Agent "msnbot" bots +#SetEnvIfNoCase User-Agent "msnbot-media" bots +SetEnvIfNoCase User-Agent "AACrawler" bots +SetEnvIfNoCase User-Agent "AcoonBot" bots +SetEnvIfNoCase User-Agent "AhrefsBot" bots +SetEnvIfNoCase User-Agent "BLEXBot" bots +SetEnvIfNoCase User-Agent "BUbiNG" bots +SetEnvIfNoCase User-Agent "Baiduspider" bots +SetEnvIfNoCase User-Agent "Baiduspider-image" bots +SetEnvIfNoCase User-Agent "CCBot" bots +SetEnvIfNoCase User-Agent "CaBot" bots +SetEnvIfNoCase User-Agent "CompSpyBot" bots +SetEnvIfNoCase User-Agent "Daum" bots +SetEnvIfNoCase User-Agent "DoCoMo" bots +SetEnvIfNoCase User-Agent "DotBot" bots +SetEnvIfNoCase User-Agent "Exabot" bots +SetEnvIfNoCase User-Agent "Ezooms" bots +SetEnvIfNoCase User-Agent "Faraday" bots +SetEnvIfNoCase User-Agent "FeedBurner" bots +SetEnvIfNoCase User-Agent "HuaweiSymantecSpider" bots +SetEnvIfNoCase User-Agent "Infohelfer" bots +SetEnvIfNoCase User-Agent "JobboerseBot" bots +SetEnvIfNoCase User-Agent "Jooblebot" bots +SetEnvIfNoCase User-Agent "Landau-Media-Spider" bots +SetEnvIfNoCase User-Agent "MJ12bot" bots +SetEnvIfNoCase User-Agent "Mail.RU_Bot" bots +SetEnvIfNoCase User-Agent "MegaIndex" bots +SetEnvIfNoCase User-Agent "MegaIndex.ru" bots +SetEnvIfNoCase User-Agent "MetaJobBot" bots +SetEnvIfNoCase User-Agent "MetricsBot" bots +SetEnvIfNoCase User-Agent "MojeekBot" bots +SetEnvIfNoCase User-Agent "Nutch-1.10" bots +SetEnvIfNoCase User-Agent "OnPageBot" bots +SetEnvIfNoCase User-Agent "OpenWebSpider" bots +SetEnvIfNoCase User-Agent "PRTGCloudBot" bots +SetEnvIfNoCase User-Agent "PiplBot" bots +SetEnvIfNoCase User-Agent "Pixray-Seeker" bots +SetEnvIfNoCase User-Agent "Qwantify" bots +SetEnvIfNoCase User-Agent "Ralocobot" bots +SetEnvIfNoCase User-Agent "SEOkicks" bots +SetEnvIfNoCase User-Agent "SEOkicks-Robot" bots +SetEnvIfNoCase User-Agent "Screaming" bots +SetEnvIfNoCase User-Agent "Seekport" bots +SetEnvIfNoCase User-Agent "SemrushBot" bots +SetEnvIfNoCase User-Agent "SeznamBot" bots +SetEnvIfNoCase User-Agent "Site24x7" bots +SetEnvIfNoCase User-Agent "Slurp" bots +SetEnvIfNoCase User-Agent "Sosospider" bots +SetEnvIfNoCase User-Agent "Speedy" bots +SetEnvIfNoCase User-Agent "Spider" bots +SetEnvIfNoCase User-Agent "Spiderlytics" bots +SetEnvIfNoCase User-Agent "Superfeedr" bots +SetEnvIfNoCase User-Agent "Toweya.com" bots +SetEnvIfNoCase User-Agent "TurnitinBot" bots +SetEnvIfNoCase User-Agent "TwengaBot" bots +SetEnvIfNoCase User-Agent "Twiceler" bots +SetEnvIfNoCase User-Agent "Twitterbot" bots +SetEnvIfNoCase User-Agent "UnisterBot" bots +SetEnvIfNoCase User-Agent "WebCapture" bots +SetEnvIfNoCase User-Agent "XoviBot" bots +SetEnvIfNoCase User-Agent "Yandex" bots +SetEnvIfNoCase User-Agent "ZumBot" bots +SetEnvIfNoCase User-Agent "adscanner" bots +SetEnvIfNoCase User-Agent "aggregator:Spinn3r" bots +SetEnvIfNoCase User-Agent "crawler" bots +SetEnvIfNoCase User-Agent "crawler@alexa.com" bots +SetEnvIfNoCase User-Agent "domaincrawler.com" bots +SetEnvIfNoCase User-Agent "echobot" bots +SetEnvIfNoCase User-Agent "heritrix" bots +SetEnvIfNoCase User-Agent "htdig" bots +SetEnvIfNoCase User-Agent "ia_archiver" bots +SetEnvIfNoCase User-Agent "imaBot" bots +SetEnvIfNoCase User-Agent "infometrics-bot" bots +SetEnvIfNoCase User-Agent "jobs.de-Robot" bots +SetEnvIfNoCase User-Agent "linkdex.com" bots +SetEnvIfNoCase User-Agent "magpie-crawler" bots +SetEnvIfNoCase User-Agent "meanpathbot" bots +SetEnvIfNoCase User-Agent "pricebot" bots +SetEnvIfNoCase User-Agent "psbot" bots +SetEnvIfNoCase User-Agent "rogerbot" bots +SetEnvIfNoCase User-Agent "seoscanners" bots +SetEnvIfNoCase User-Agent "smtbot" bots +SetEnvIfNoCase User-Agent "spbot" bots +SetEnvIfNoCase User-Agent "spider" bots +SetEnvIfNoCase User-Agent "ssearch_bot" bots +SetEnvIfNoCase User-Agent "tb-webde" bots +SetEnvIfNoCase User-Agent "textlink_status_crawler" bots +SetEnvIfNoCase User-Agent "tracemyfile" bots +SetEnvIfNoCase User-Agent "trendictionbot" bots +SetEnvIfNoCase User-Agent "vebidoobot-Robot" bots +#### Retry 12h +Header always set Retry-After "43200" env=bots +RewriteEngine on +RewriteCond %{ENV:bots} 1 +RewriteRule .* - [R=503,L] +################################################ +################################################ +# + + + Header set Strict-Transport-Security: "max-age=63072000; includeSubDomains; preload" + ### Begin: Compression ### @@ -108,8 +222,8 @@ AddEncoding gzip .gzip ExpiresByType text/javascript "access plus 1 year" ExpiresByType application/manifest+json "access plus 1 week" - ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" - ExpiresByType text/cache-manifest "access plus 0 seconds" + ExpiresByType application/x-web-app-manifest+json "access plus 1 second" + ExpiresByType text/cache-manifest "access plus 1 second" ExpiresByType audio/ogg "access plus 1 month" ExpiresByType image/bmp "access plus 1 month" @@ -235,8 +349,12 @@ AddDefaultCharset utf-8 - # Enable URL rewriting - RewriteEngine On + # Enable URL rewriting + RewriteEngine On + + RewriteRule (wp-content|wp-admin|wp-login) https://www.ep-reisen.de/sinkhole.html [L,R=301,NC] + RewriteRule (rss|feeds|thread|threads|posts) https://www.ep-reisen.de/sinkhole.html [L,R=301,NC] + RewriteRule (forum|forums|member|members) https://www.ep-reisen.de/sinkhole.html [L,R=301,NC] # Begin ep-events.de redirects RewriteCond %{HTTP_HOST} ^www\.ep\-events\.de [NC] @@ -393,8 +511,8 @@ AddDefaultCharset utf-8 RewriteRule ^skireise-ins-val-di-sole-almazzago https://www.ep-events.de/team-building/ [L,R=301,NC] RewriteCond %{HTTP_HOST} ^www\.ep\-events\.de [NC] RewriteRule ^firmenveranstaltungen/sports-active/bagger-bzw-panzerfahren https://www.ep-events.de/agentur/programm-ideen/ [L,R=301,NC] - RewriteCond %{HTTP_HOST} ^www\.ep\-events\.de [NC] - RewriteRule ^Firmenveranstaltungen https://www.ep-events.de/ [L,R=301,NC] + #RewriteCond %{HTTP_HOST} ^www\.ep\-events\.de [NC] + #RewriteRule ^Firmenveranstaltungen https://www.ep-events.de/ [L,R=301,NC] RewriteCond %{HTTP_HOST} ^www\.ep\-events\.de [NC] RewriteRule ^firmenveranstaltungen/sports-active/orientierungs-erlebniswanderung https://www.ep-events.de/agentur/programm-ideen/ [L,R=301,NC] RewriteCond %{HTTP_HOST} ^www\.ep\-events\.de [NC] @@ -2881,11 +2999,16 @@ AddDefaultCharset utf-8 RewriteCond %{HTTP_HOST} !^www\.ski\-boarderweek\.de RewriteCond %{HTTP_HOST} !^skimax\.ep\-reisen\.de RewriteCond %{HTTP_HOST} !^schnee\-event\.ep\-reisen\.de + RewriteCond %{HTTP_HOST} !^(www\.)?eventkonzept\.de RewriteCond %{HTTP_HOST} !^www\.ep\-reisen\.de RewriteRule (.*) https://www.ep-reisen.de/ [R=301,L] # End redirect catchall subdomains - # Force SSL for all domains + # Redirect eventkonzept.de for the time being + RewriteCond %{HTTP_HOST} ^(www\.)?eventkonzept\.de + RewriteRule (.*) https://www.ep-events.de/ [R=302,L] + + # Force SSL for all domains RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L] @@ -2895,12 +3018,20 @@ AddDefaultCharset utf-8 RewriteRule ^.*$ - [E=CWD:%2] # Rules to set ApplicationContext based on hostname - #RewriteCond %{HTTP_HOST} ^dev\.example\.com$ - #RewriteRule .? - [E=TYPO3_CONTEXT:Development] - #RewriteCond %{HTTP_HOST} ^staging\.example\.com$ - #RewriteRule .? - [E=TYPO3_CONTEXT:Production/Staging] - #RewriteCond %{HTTP_HOST} ^www\.example\.com$ - #RewriteRule .? - [E=TYPO3_CONTEXT:Production] + RewriteCond %{HTTP_HOST} ^schnee\-event\.ep\-reisen\.de$ + RewriteRule .? - [E=TYPO3_CONTEXT:Production/Skimax] + RewriteCond %{HTTP_HOST} ^www\.ep\-reisen\.de$ + RewriteRule .? - [E=TYPO3_CONTEXT:Production] + RewriteCond %{HTTP_HOST} ^www\.ep\-events\.de$ + RewriteRule .? - [E=TYPO3_CONTEXT:Production] + RewriteCond %{HTTP_HOST} ^www\.ski\-wochenenden\.de$ + RewriteRule .? - [E=TYPO3_CONTEXT:Production] + RewriteCond %{HTTP_HOST} ^www\.ski\-boarderweek\.de$ + RewriteRule .? - [E=TYPO3_CONTEXT:Production] + RewriteCond %{HTTP_HOST} ^www\.unichamp\.de$ + RewriteRule .? - [E=TYPO3_CONTEXT:Production] + RewriteCond %{HTTP_HOST} ^www\.snowzone\.net$ + RewriteRule .? - [E=TYPO3_CONTEXT:Production] # Rule for versioned static files, configured through: # - $GLOBALS['TYPO3_CONF_VARS']['BE']['versionNumberInFilename'] @@ -2927,6 +3058,165 @@ AddDefaultCharset utf-8 # NOTE: Add your additional local storages here RewriteRule ^(?:typo3/|fileadmin/|typo3conf/|typo3temp/|uploads/|favicon\.ico) - [L] + + ### Begin: StaticFileCache (preparation) #### + + # Document root configuration + RewriteRule .* - [E=SFC_ROOT:%{DOCUMENT_ROOT}] + + # Cleanup URI + RewriteCond %{REQUEST_URI} ^.*$ + RewriteRule .* - [E=SFC_URI:/%{REQUEST_URI}] + RewriteCond %{REQUEST_URI} ^/.*$ + RewriteRule .* - [E=SFC_URI:%{REQUEST_URI}] + RewriteCond %{REQUEST_URI} ^/?$ + RewriteRule .* - [E=SFC_URI:/] + + # Cleanup HOST + RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$ + RewriteRule .* - [E=SFC_HOST:%1] + + # Disable cache for EXT:solr indexing requests + RewriteCond %{HTTP:X-Tx-Solr-Iq} .+ + RewriteRule .* - [E=SFC_HOST:invalid-host] + + # Get scheme + RewriteRule .* - [E=SFC_PROTOCOL:http] + RewriteCond %{SERVER_PORT} ^443$ [OR] + RewriteCond %{HTTP:X-Forwarded-Proto} https + RewriteRule .* - [E=SFC_PROTOCOL:https] + + # Get port + RewriteRule .* - [E=SFC_PORT:80] + RewriteCond %{ENV:SFC_PROTOCOL} ^https$ [NC] + RewriteRule .* - [E=SFC_PORT:443] + RewriteCond %{SERVER_PORT} ^[0-9]+$ + RewriteRule .* - [E=SFC_PORT:%{SERVER_PORT}] + RewriteCond %{HTTP:X-Forwarded-Port} ^[0-9]+$ + RewriteRule .* - [E=SFC_PORT:%{HTTP:X-Forwarded-Port}] + + # Full path for redirect + RewriteRule .* - [E=SFC_FULLPATH:typo3temp/tx_staticfilecache/%{ENV:SFC_PROTOCOL}_%{ENV:SFC_HOST}_%{ENV:SFC_PORT}%{ENV:SFC_URI}/index] + + # Extension (Order: br, gzip, default) + RewriteRule .* - [E=SFC_EXT:] + RewriteCond %{HTTP:Accept-Encoding} br [NC] + RewriteRule .* - [E=SFC_EXT:.br] + RewriteCond %{ENV:SFC_ROOT}/%{ENV:SFC_FULLPATH}%{ENV:SFC_EXT} !-f + RewriteRule .* - [E=SFC_EXT:] + RewriteCond %{ENV:SFC_EXT} ^$ + RewriteCond %{HTTP:Accept-Encoding} gzip [NC] + RewriteRule .* - [E=SFC_EXT:.gz] + RewriteCond %{ENV:SFC_EXT} ^\.gz$ + RewriteCond %{ENV:SFC_ROOT}/%{ENV:SFC_FULLPATH}%{ENV:SFC_EXT} !-f + RewriteRule .* - [E=SFC_EXT:] + + # Write Extension to SFC_FULLPATH + RewriteRule .* - [E=SFC_FULLPATH:%{ENV:SFC_FULLPATH}%{ENV:SFC_EXT}] + + ### Begin: StaticFileCache (main) #### + + # We only redirect URI's without query strings + RewriteCond %{QUERY_STRING} ^$ + + # It only makes sense to do the other checks if a static file actually exists. + RewriteCond %{ENV:SFC_ROOT}/%{ENV:SFC_FULLPATH} -f + + # NO frontend or backend user is logged in. Logged in users may see different + # information than anonymous users. But the anonymous version is cached. So + # don't show the anonymous version to logged in users. + RewriteCond %{HTTP_COOKIE} !staticfilecache [NC] + + # We only redirect GET requests + RewriteCond %{REQUEST_METHOD} GET + + # Rewrite the request to the static file. + RewriteRule .* %{ENV:SFC_ROOT}/%{ENV:SFC_FULLPATH} [L] + + # Do not allow direct call the cache entries + RewriteCond %{ENV:SFC_URI} ^/typo3temp/tx_staticfilecache/.* + RewriteCond %{ENV:REDIRECT_STATUS} ^$ + RewriteRule .* - [F,L] + + # Handle application cache + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-l + RewriteRule ^.*\.sfc$ %{ENV:CWD}index.php?eID=sfc_manifest [QSA,L] + + ### Begin: StaticFileCache (options) #### + + # Set proper content type and encoding for gzipped html. + + SetEnv no-gzip 1 + SetEnv no-brotli 1 + + Header set Content-Encoding gzip + + + + SetEnv no-gzip 1 + SetEnv no-brotli 1 + + Header set Content-Encoding gzip + + + + SetEnv no-gzip 1 + SetEnv no-brotli 1 + + Header set Content-Encoding br + + + + # if there are same problems with ForceType, please try the AddType alternative + # Set proper content type gzipped html + + ForceType text/html + # AddType "text/html" .gzip + + + ForceType text/xml + # AddType "text/xml" .gzip + + + ForceType text/xml + # AddType "text/xml" .gzip + + + ForceType text/html + # AddType "text/html" .gz + + + ForceType text/xml + # AddType "text/xml" .gz + + + ForceType text/xml + # AddType "text/xml" .gz + + + ForceType text/html + # AddType "text/html" .br + + + ForceType text/xml + # AddType "text/xml" .br + + + ForceType text/xml + # AddType "text/xml" .br + + + # Avoid .br files being delivered with Content-Language: br headers + + RemoveLanguage .br + + + ### End: StaticFileCache ### + + + # If the file/symlink/directory does not exist => Redirect to index.php. # For httpd.conf, you need to prefix each '%{REQUEST_FILENAME}' with '%{DOCUMENT_ROOT}'. RewriteCond %{REQUEST_FILENAME} !-f