feat: replace SummitWave site with 301 redirect from apex to www subdomain

- Update deployment script to clear all existing files and upload only .htaccess
- Remove landing page (index.html), impressum, robots.txt, sitemap.xml
- Remove all img directory contents and manual directory (including PHP auth, logs, images)
- Simplify .htaccess to redirect summitwave.eu → www.summitwave.eu with 301
- Delete empty optimize_device.sh and sftp files
- Update deployment comments to reflect redirect-only
This commit is contained in:
2026-01-11 09:50:48 +01:00
parent 2a50e694a7
commit 5d529c9789
5 changed files with 27 additions and 278 deletions

View File

@@ -1,66 +1,40 @@
#!/bin/bash #!/bin/bash
# Deploy SummitWave landing page to Hetzner public_html via SFTP # Clear SummitWave site and set up 301 redirect from summitwave.eu to www.summitwave.eu
# === CONFIGURATION === # === CONFIGURATION ===
SERVER="www269.your-server.de" SERVER="www269.your-server.de"
USER="summitb" USER="summitb"
REMOTE_DIR="public_html" REMOTE_DIR="public_html"
LOCAL_DIR="$(dirname \"$0\")/src" LOCAL_DIR="$(dirname "$0")/src"
# === UPLOAD === echo "Clearing website and setting up redirect on $USER@$SERVER:$REMOTE_DIR ..."
echo "Uploading website files to $USER@$SERVER:$REMOTE_DIR ..."
# Connect via SFTP: clear existing files, then upload only .htaccess
sftp $USER@$SERVER <<EOF sftp $USER@$SERVER <<EOF
cd $REMOTE_DIR cd $REMOTE_DIR
put -r $LOCAL_DIR/index.html
put -r $LOCAL_DIR/impressum.html
put -r $LOCAL_DIR/robots.txt
put -r $LOCAL_DIR/sitemap.xml
put -r $LOCAL_DIR/.htaccess
# Hauptbilder der Landingpage # Remove existing files
mkdir img rm index.html
cd img rm impressum.html
put -r $LOCAL_DIR/img/* rm robots.txt
cd .. rm sitemap.xml
# Manual (HTML + Bilder + PHP + Logs) # Remove img directory contents and directory
mkdir manual rm img/*
cd manual rmdir img
# statische HTML-Variante (Fallback / Direktaufrufe) # Remove manual directory contents (nested structure)
put -r $LOCAL_DIR/manual/index.html rm manual/logs/*
rmdir manual/logs
rm manual/img/*
rmdir manual/img
rm manual/*
rmdir manual
# PHP-basierte Manual-/Login-Dateien # Upload only the .htaccess for redirect
put -r $LOCAL_DIR/manual/.htaccess put $LOCAL_DIR/.htaccess
put -r $LOCAL_DIR/manual/index.php
put -r $LOCAL_DIR/manual/login.php
put -r $LOCAL_DIR/manual/auth.config.php
put -r $LOCAL_DIR/manual/auth.php
put -r $LOCAL_DIR/manual/logout.php
# Manual-Bilder
put -r $LOCAL_DIR/manual/beacon-front.jpg
mkdir img
cd img
put -r $LOCAL_DIR/manual/img/*
cd ..
# Manual-Zertifikat (Download)
mkdir cert
cd cert
put -r $LOCAL_DIR/manual/cert/*
cd ..
# Log-Verzeichnis für Zugriffsprotokolle
mkdir logs
cd logs
put -r $LOCAL_DIR/manual/logs/access.log
cd ..
cd ..
bye bye
EOF EOF
echo "Deployment complete. Visit your site to verify: http://summitwave.eu/" echo "Done. summitwave.eu now redirects 301 to www.summitwave.eu"
# BiLqHib8s5Ag2FmL

View File

@@ -1,200 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Consent Mode (default: denied) placed before GA -->
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'denied',
'functionality_storage': 'denied',
'personalization_storage': 'denied',
'security_storage': 'granted'
});
</script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-WGTJPNLWV7"></script>
<script>
gtag('js', new Date());
gtag('config', 'G-WGTJPNLWV7');
</script>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>SummitWave | Wireless Audio Made Easy</title>
<meta name="description" content="SummitWave transmitters deliver crystal-clear, low-latency multichannel audio to everyone."/>
<meta name="robots" content="index,follow" />
<meta name="theme-color" content="#2563EB" />
<link rel="icon" type="image/x-icon" href="img/favicon.ico" />
<link rel="apple-touch-icon" href="img/favicon.ico" />
<link rel="canonical" href="https://summitwave.eu/" />
<link rel="alternate" hreflang="en" href="https://summitwave.eu/" />
<meta property="og:type" content="website"/>
<meta property="og:title" content="SummitWave | Wireless Audio Made Easy"/>
<meta property="og:description" content="Broadcast brilliant multichannel audio anywhere with SummitWave transmitters."/>
<meta property="og:url" content="https://summitwave.eu/"/>
<meta property="og:site_name" content="SummitWave"/>
<meta property="og:image" content="https://summitwave.eu/img/logo.png"/>
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="SummitWave | Wireless Audio Made Easy" />
<meta name="twitter:description" content="Broadcast brilliant multichannel audio anywhere with SummitWave transmitters." />
<meta name="twitter:image" content="https://summitwave.eu/img/logo.png" />
<!-- Tailwind via CDN for rapid styling -->
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
</head>
<body class="bg-white text-gray-800 leading-relaxed antialiased">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "SummitWave",
"url": "https://summitwave.eu/",
"inLanguage": "en",
"publisher": {
"@type": "Organization",
"name": "SummitWave",
"url": "https://summitwave.eu/",
"logo": {
"@type": "ImageObject",
"url": "https://summitwave.eu/img/logo.png"
}
}
}
</script>
<!-- =========== Header & Nav ============ -->
<header class="py-6 px-4 md:px-12 flex items-center justify-between">
<img src="img/logo.png" alt="SummitWave logo" class="h-24 md:h-28" />
<nav class="space-x-6 text-lg font-medium" aria-label="Primary">
<a href="#usecases" class="hover:text-blue-600">Use cases</a>
<a href="#why" class="hover:text-blue-600">Why Wireless Audio</a>
<a href="#features" class="hover:text-blue-600">Features</a>
<a href="#contact" class="hover:text-blue-600">Contact</a>
</nav>
</header>
<!-- =========== Hero =========== -->
<section class="flex flex-col items-center text-center mt-12 px-4">
<h1 class="text-4xl md:text-5xl font-bold text-blue-700">Crystal-clear audio, wherever it matters</h1>
<h2 class="mt-2 text-xl md:text-2xl text-gray-700">
Deliver immersive, low-latency sound directly to your audiences devices—perfect for venues, events, classrooms, and conferences.
</h2>
<img src="img/device.png" alt="SummitWave wireless audio transmitter" loading="lazy" class="mt-8 w-full max-w-md rounded-lg shadow-xl"/>
<a href="#contact" class="mt-8 inline-block bg-blue-600 text-white rounded-2xl px-8 py-3 shadow-lg transform transition hover:scale-105">
Get started today
</a>
</section>
<!-- =========== Use cases =========== -->
<section id="usecases" class="mt-24 bg-blue-50 py-16 px-4 md:px-12">
<h2 class="text-3xl md:text-4xl font-bold text-center text-blue-700">Use cases</h2>
<div class="mt-12 grid gap-10 md:grid-cols-3">
<div class="bg-white rounded-2xl p-6 shadow-lg flex flex-col">
<h3 class="text-xl font-semibold mb-2">Live Events & Festivals</h3>
<p>Multiple stages, multiple languages, zero coordination headaches. Guests select their preferred audio stream instantly on their own device.</p>
</div>
<div class="bg-white rounded-2xl p-6 shadow-lg flex flex-col">
<h3 class="text-xl font-semibold mb-2">Universities & Lecture Halls</h3>
<p>Provide clear lectures, simultaneous translations, and assistive listening. Students use personal devices—no extra hardware required.</p>
</div>
<div class="bg-white rounded-2xl p-6 shadow-lg flex flex-col">
<h3 class="text-xl font-semibold mb-2">Theaters & Cinemas</h3>
<p>Offer lip-synced audio, multilingual tracks, and audio descriptions without disturbing other audience members.</p>
</div>
<div class="bg-white rounded-2xl p-6 shadow-lg flex flex-col">
<h3 class="text-xl font-semibold mb-2">Conference Centers</h3>
<p>Stream presentations, breakouts, and overflow rooms effortlessly. Attendees join the stream on their own devices.</p>
</div>
<div class="bg-white rounded-2xl p-6 shadow-lg flex flex-col">
<h3 class="text-xl font-semibold mb-2">Rail & Transit Hubs</h3>
<p>Replace unclear announcements with on-demand, easy-to-access audio streams for schedules, tourist info, and emergency messages.</p>
</div>
</div>
</section>
<!-- =========== Wireless Audio Explainer ============ -->
<section id="why" class="mt-20 md:mt-24 pt-12 pb-10 px-4 md:px-12 border-t border-gray-200">
<h2 class="text-3xl md:text-4xl font-bold text-center mb-6 md:mb-8 text-blue-700 tracking-tight">Why Wireless Audio?</h2>
<p class="max-w-2xl mx-auto text-lg text-gray-700 text-center mb-6">
Our wireless audio platform allows venues and event organizers to broadcast multiple, low-latency audio streams simultaneously. Everyone can join instantly using their own device—no setup hassles, no extra hardware.
</p>
<ul class="max-w-4xl mx-auto grid gap-3 md:gap-4 md:grid-cols-2 text-lg">
<li class="leading-relaxed text-left"><span class="font-semibold text-gray-900">Instant access for everyone</span> <span class="text-gray-700">audiences use their own devices; no receivers or special equipment needed.</span></li>
<li class="leading-relaxed text-left"><span class="font-semibold text-gray-900">Inclusive listening</span> <span class="text-gray-700">fully compatible with modern hearing devices and personal audio equipment.</span></li>
<li class="leading-relaxed text-left"><span class="font-semibold text-gray-900">Perfectly synchronized</span> <span class="text-gray-700">low-latency streaming ensures lip-synced audio for presentations, video, and live performances.</span></li>
<li class="leading-relaxed text-left"><span class="font-semibold text-gray-900">Flexible & future-ready</span> <span class="text-gray-700">works with current devices and easily integrates into existing infrastructure.</span></li>
</ul>
</section>
<!-- =========== Features =========== -->
<section id="features" class="mt-24 px-4 md:px-12">
<h2 class="text-3xl md:text-4xl font-bold text-center mb-12 text-blue-700">Features</h2>
<div class="grid gap-8 md:grid-cols-3">
<div class="bg-white rounded-2xl p-6 shadow-lg">
<h3 class="text-xl font-semibold mb-2">Flexible Audio Inputs</h3>
<p>Connect existing equipment via AES67, USB, or web audio streams for seamless integration.</p>
</div>
<div class="bg-white rounded-2xl p-6 shadow-lg">
<h3 class="text-xl font-semibold mb-2">Multi-channel Streaming</h3>
<p>Broadcast up to six independent audio channels for translations, programs, or separate sessions.</p>
</div>
<div class="bg-white rounded-2xl p-6 shadow-lg">
<h3 class="text-xl font-semibold mb-2">Web-based Control</h3>
<p>Monitor, configure, and update from any device without installing software.</p>
</div>
<div class="bg-white rounded-2xl p-6 shadow-lg">
<h3 class="text-xl font-semibold mb-2">Smart Management</h3>
<p>Group transmitters, automate updates, and manage streams effortlessly.</p>
</div>
<div class="bg-white rounded-2xl p-6 shadow-lg">
<h3 class="text-xl font-semibold mb-2">Automated Deployment</h3>
<p>Full REST API enables integration into large-scale setups.</p>
</div>
<div class="bg-white rounded-2xl p-6 shadow-lg">
<h3 class="text-xl font-semibold mb-2">Compact & Efficient</h3>
<p>Discreet, versatile mounting options for any environment.</p>
</div>
</div>
</section>
<!-- =========== Contact ============ -->
<section id="contact" class="mt-24 bg-blue-700 text-white py-16 px-4 md:px-12 text-center">
<h2 class="text-3xl md:text-4xl font-bold mb-6">Lets bring your audio to life</h2>
<p class="max-w-2xl mx-auto mb-10 text-lg">Share your project details, and well help you implement the perfect wireless audio solution.</p>
<form action="https://formspree.io/f/xrbkynzk" method="POST" class="max-w-xl mx-auto flex flex-col gap-5 text-left">
<label class="block">
<span class="block mb-1 font-medium">Name</span>
<input type="text" name="name" placeholder="Your name" class="w-full px-4 py-3 rounded-lg text-gray-900 focus:ring-2 focus:ring-blue-400 border border-gray-300 focus:outline-none transition" />
</label>
<label class="block">
<span class="block mb-1 font-medium">Company</span>
<input type="text" name="venue" placeholder="Your company" class="w-full px-4 py-3 rounded-lg text-gray-900 focus:ring-2 focus:ring-blue-400 border border-gray-300 focus:outline-none transition" />
</label>
<label class="block">
<span class="block mb-1 font-medium">Email <span class="text-red-400">*</span></span>
<input type="email" name="email" placeholder="you@email.com" required class="w-full px-4 py-3 rounded-lg text-gray-900 focus:ring-2 focus:ring-blue-400 border border-gray-300 focus:outline-none transition" />
</label>
<label class="block">
<span class="block mb-1 font-medium">Message <span class="text-red-400">*</span></span>
<textarea name="message" placeholder="How can we help you?" required class="w-full px-4 py-3 rounded-lg text-gray-900 focus:ring-2 focus:ring-blue-400 border border-gray-300 focus:outline-none transition"></textarea>
</label>
<button type="submit" class="bg-white text-blue-700 rounded-2xl px-10 py-4 font-semibold shadow-lg transform transition hover:scale-105 focus:ring-2 focus:ring-blue-400 border border-blue-700">
Contact us!
</button>
</form>
</section>
<!-- =========== Footer ============ -->
<footer class="py-8 text-center text-sm text-gray-500">
<div class="space-x-4">
<span>&copy; 2025 SummitWave. All rights reserved.</span>
<a href="impressum.html" class="text-blue-700 hover:underline">Impressum</a>
</div>
</footer>
</body>
</html>

View File

0
sftp
View File

View File

@@ -1,35 +1,10 @@
# Enable rewrite engine # Enable rewrite engine
RewriteEngine On RewriteEngine On
# Force HTTPS # Force HTTPS first
RewriteCond %{HTTPS} !=on RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Redirect www to apex # 301 Redirect apex (summitwave.eu) to www.summitwave.eu
RewriteCond %{HTTP_HOST} ^www\.summitwave\.eu$ [NC] RewriteCond %{HTTP_HOST} ^summitwave\.eu$ [NC]
RewriteRule ^ https://summitwave.eu%{REQUEST_URI} [L,R=301] RewriteRule ^ https://www.summitwave.eu%{REQUEST_URI} [L,R=301]
# Canonicalize index.html to root
RewriteRule ^index\.html$ https://summitwave.eu/ [L,R=301]
# Ensure /manual/ uses PHP (login-guarded)
RewriteRule ^manual/?$ /manual/index.php [L]
# Cache static assets (adjust as needed)
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/webp "access plus 6 months"
ExpiresByType image/png "access plus 6 months"
ExpiresByType image/jpeg "access plus 6 months"
ExpiresByType image/svg+xml "access plus 6 months"
ExpiresByType image/x-icon "access plus 12 months"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
# Security headers (best-effort; host must support)
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set X-Frame-Options "SAMEORIGIN"
</IfModule>