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:
@@ -1,66 +1,40 @@
|
||||
#!/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 ===
|
||||
SERVER="www269.your-server.de"
|
||||
USER="summitb"
|
||||
REMOTE_DIR="public_html"
|
||||
LOCAL_DIR="$(dirname \"$0\")/src"
|
||||
LOCAL_DIR="$(dirname "$0")/src"
|
||||
|
||||
# === UPLOAD ===
|
||||
echo "Uploading website files to $USER@$SERVER:$REMOTE_DIR ..."
|
||||
echo "Clearing website and setting up redirect on $USER@$SERVER:$REMOTE_DIR ..."
|
||||
|
||||
# Connect via SFTP: clear existing files, then upload only .htaccess
|
||||
sftp $USER@$SERVER <<EOF
|
||||
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
|
||||
mkdir img
|
||||
cd img
|
||||
put -r $LOCAL_DIR/img/*
|
||||
cd ..
|
||||
# Remove existing files
|
||||
rm index.html
|
||||
rm impressum.html
|
||||
rm robots.txt
|
||||
rm sitemap.xml
|
||||
|
||||
# Manual (HTML + Bilder + PHP + Logs)
|
||||
mkdir manual
|
||||
cd manual
|
||||
# Remove img directory contents and directory
|
||||
rm img/*
|
||||
rmdir img
|
||||
|
||||
# statische HTML-Variante (Fallback / Direktaufrufe)
|
||||
put -r $LOCAL_DIR/manual/index.html
|
||||
# Remove manual directory contents (nested structure)
|
||||
rm manual/logs/*
|
||||
rmdir manual/logs
|
||||
rm manual/img/*
|
||||
rmdir manual/img
|
||||
rm manual/*
|
||||
rmdir manual
|
||||
|
||||
# PHP-basierte Manual-/Login-Dateien
|
||||
put -r $LOCAL_DIR/manual/.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
|
||||
# Upload only the .htaccess for redirect
|
||||
put $LOCAL_DIR/.htaccess
|
||||
|
||||
# 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
|
||||
EOF
|
||||
|
||||
echo "Deployment complete. Visit your site to verify: http://summitwave.eu/"
|
||||
|
||||
# BiLqHib8s5Ag2FmL
|
||||
echo "Done. summitwave.eu now redirects 301 to www.summitwave.eu"
|
||||
|
||||
200
index.html
200
index.html
@@ -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 audience’s 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">Let’s bring your audio to life</h2>
|
||||
<p class="max-w-2xl mx-auto mb-10 text-lg">Share your project details, and we’ll 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>© 2025 SummitWave. All rights reserved.</span>
|
||||
<a href="impressum.html" class="text-blue-700 hover:underline">Impressum</a>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,35 +1,10 @@
|
||||
# Enable rewrite engine
|
||||
RewriteEngine On
|
||||
|
||||
# Force HTTPS
|
||||
# Force HTTPS first
|
||||
RewriteCond %{HTTPS} !=on
|
||||
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
|
||||
|
||||
# Redirect www to apex
|
||||
RewriteCond %{HTTP_HOST} ^www\.summitwave\.eu$ [NC]
|
||||
RewriteRule ^ https://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>
|
||||
# 301 Redirect apex (summitwave.eu) to www.summitwave.eu
|
||||
RewriteCond %{HTTP_HOST} ^summitwave\.eu$ [NC]
|
||||
RewriteRule ^ https://www.summitwave.eu%{REQUEST_URI} [L,R=301]
|
||||
|
||||
Reference in New Issue
Block a user