chore: save iqon static deploy snapshot

This commit is contained in:
Sergei Vasilev
2026-05-20 17:21:42 +03:00
parent 497f2450e9
commit c023fe5d8d
121 changed files with 3211 additions and 24373 deletions
+134
View File
@@ -0,0 +1,134 @@
# IQON Static Deployment — .htaccess for reg.ru shared hosting
# Replaces WordPress routing with static file serving + 301 redirects
# Created: 2026-05-20
# Updated: 2026-05-20
# ── Security headers ──────────────────────────────────────────────
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src https://fonts.gstatic.com; img-src 'self' data:; connect-src 'self'; base-uri 'self'; frame-ancestors 'self'"
</IfModule>
# ── Rewrite engine ───────────────────────────────────────────────
<IfModule mod_rewrite.c>
RewriteEngine On
# ── Force HTTPS ───────────────────────────────────────────
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# ── Canonical host ────────────────────────────────────────
RewriteCond %{HTTP_HOST} ^www\.iqon\.com$ [NC]
RewriteRule ^ https://iqon.com%{REQUEST_URI} [L,R=301]
# ── Block WordPress surfaces ──────────────────────────────
RewriteRule ^wp-json/ - [F,L]
RewriteRule ^xmlrpc\.php$ - [F,L]
RewriteRule ^wp-login\.php$ - [F,L]
# ── Block WordPress files ─────────────────────────────────
RewriteRule ^readme\.html$ - [F,L]
RewriteRule ^license\.html$ - [F,L]
RewriteRule ^wp-config\.php$ - [F,L]
# ── Domain redirects (from original .htaccess) ─────────────
RewriteCond %{HTTP_HOST} ^iqon\.md$ [OR]
RewriteCond %{HTTP_HOST} ^www\.iqon\.md$
RewriteRule ^/?$ https://www.iqon.com/ [R=301,L]
RewriteCond %{HTTP_HOST} ^iqonrussia\.kz$ [OR]
RewriteCond %{HTTP_HOST} ^www\.iqonrussia\.kz$
RewriteRule ^/?$ https://www.iqon.com/ [R=301,L]
RewriteCond %{HTTP_HOST} ^iqonrussia\.ru$ [OR]
RewriteCond %{HTTP_HOST} ^www\.iqonrussia\.ru$
RewriteRule ^/?$ https://www.iqon.com/ [R=301,L]
# ── Homepage aliases → / ──────────────────────────────────
RewriteRule ^homepage/?$ / [R=301,L]
RewriteRule ^hows-business/?$ / [R=301,L]
# ── Old service URLs → new /services/ structure ────────────
RewriteRule ^services-solutions/?$ /services/ [R=301,L]
# Enterprise Management & Decision Support → Strategy & Governance / Data & Analytics
RewriteRule ^services-solutions/enterprise-management-decision-support-solutions/?$ /services/strategy-governance/ [R=301,L]
RewriteRule ^services-solutions/enterprise-management-decision-support-solutions/managed-services/?$ /services/strategy-governance/ [R=301,L]
RewriteRule ^services-solutions/enterprise-management-decision-support-solutions/enterprise-orchestration/?$ /services/strategy-governance/ [R=301,L]
RewriteRule ^services-solutions/enterprise-management-decision-support-solutions/enterprise-management-systems/?$ /services/strategy-governance/ [R=301,L]
RewriteRule ^services-solutions/enterprise-management-decision-support-solutions/customer-intelligence-solutions/?$ /services/data-analytics/ [R=301,L]
RewriteRule ^services-solutions/enterprise-management-decision-support-solutions/enterprise-information-management/?$ /services/data-analytics/ [R=301,L]
# IS Advisory → Enterprise Architecture / Strategy & Governance / Security
RewriteRule ^services-solutions/is-advisory-services/?$ /services/enterprise-architecture/ [R=301,L]
RewriteRule ^services-solutions/is-advisory-services/business-technology-enterprise-architecture/?$ /services/enterprise-architecture/ [R=301,L]
RewriteRule ^services-solutions/is-advisory-services/it-strategy-governance/?$ /services/strategy-governance/ [R=301,L]
RewriteRule ^services-solutions/is-advisory-services/information-security-services/?$ /services/security-continuity/ [R=301,L]
RewriteRule ^services-solutions/is-advisory-services/business-continuity-and-disaster-recovery-planning-services/?$ /services/security-continuity/ [R=301,L]
RewriteRule ^services-solutions/is-advisory-services/is-regulatory-and-compliance-services/?$ /services/security-continuity/ [R=301,L]
# IT Infrastructure → Infrastructure & Cloud
RewriteRule ^services-solutions/it-infrastructure-services/?$ /services/infrastructure-cloud/ [R=301,L]
RewriteRule ^services-solutions/it-infrastructure-services/infrastructure-management-consulting/?$ /services/infrastructure-cloud/ [R=301,L]
RewriteRule ^services-solutions/it-infrastructure-services/it-infrastructure-transformation-services/?$ /services/infrastructure-cloud/ [R=301,L]
RewriteRule ^services-solutions/it-infrastructure-services/end-user-computing-technology-solutions/?$ /services/infrastructure-cloud/ [R=301,L]
# Mobility → Enterprise Architecture / Infrastructure & Cloud
RewriteRule ^services-solutions/mobility-consulting-services/?$ /services/enterprise-architecture/ [R=301,L]
RewriteRule ^services-solutions/mobility-consulting-services/mobility-software-services-applications/?$ /services/enterprise-architecture/ [R=301,L]
RewriteRule ^services-solutions/mobility-consulting-services/mobility-managed-services/?$ /services/enterprise-architecture/ [R=301,L]
RewriteRule ^services-solutions/mobility-consulting-services/mobility-software-services-devices-and-platforms/?$ /services/infrastructure-cloud/ [R=301,L]
RewriteRule ^services-solutions/mobility-consulting-services/mobility-business-integration-services/?$ /services/enterprise-architecture/ [R=301,L]
# Industry Specific → /industries/
RewriteRule ^services-solutions/industry-specific-services/?$ /industries/ [R=301,L]
RewriteRule ^industry-specific-services/?$ /industries/ [R=301,L]
RewriteRule ^services-solutions/industry-specific-services/retail-wholesail/?$ /industries/ [R=301,L]
RewriteRule ^services-solutions/industry-specific-services/retail-wholesale/?$ /industries/ [R=301,L]
RewriteRule ^services-solutions/industry-specific-services/logistics-transport/?$ /industries/ [R=301,L]
RewriteRule ^services-solutions/industry-specific-services/telecommunication/?$ /industries/ [R=301,L]
RewriteRule ^services-solutions/industry-specific-services/energy-utilities/?$ /industries/ [R=301,L]
RewriteRule ^services-solutions/industry-specific-services/manufacturing-process/?$ /industries/ [R=301,L]
# Contact
RewriteRule ^contact-kz/?$ /contact/ [R=301,L]
# ── Russian URLs → English (EN-only policy) ─────────────────
RewriteRule ^%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B8-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F/?$ /services/ [R=301,L,NE]
RewriteRule ^%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B8-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F/enterprise-management-decision-support-solutions/?$ /services/strategy-governance/ [R=301,L,NE]
RewriteRule ^%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B8-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F/it-infrastructure-services/?$ /services/infrastructure-cloud/ [R=301,L,NE]
RewriteRule ^%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B8-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F/industry-specific-services/?$ /industries/ [R=301,L,NE]
RewriteRule ^%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B8-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F/mobility-consulting-services/?$ /services/enterprise-architecture/ [R=301,L,NE]
RewriteRule ^%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B8-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F/is-advisory-services/?$ /services/enterprise-architecture/ [R=301,L,NE]
# Catch-all for remaining Russian subpaths
RewriteCond %{REQUEST_URI} ^/%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B8-%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F/
RewriteRule .* /services/ [R=301,L,NE]
# ── Custom error pages ─────────────────────────────────────
ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
</IfModule>
# ── Caching ──────────────────────────────────────────────────────
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/html "access plus 1 hour"
ExpiresByType text/css "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType application/xml "access plus 1 hour"
</IfModule>
# ── Block directory listings ─────────────────────────────────────
Options -Indexes
# ── Protect sensitive files ──────────────────────────────────────
<FilesMatch "^(wp-config|\.htaccess|\.env)">
Require all denied
</FilesMatch>
+28
View File
@@ -0,0 +1,28 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>403 — Forbidden | IQON</title>
<meta name="robots" content="noindex, nofollow" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Sora:wght@300;400;600;700;800&display=swap" rel="stylesheet" />
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Sora',system-ui,sans-serif;background:#0A0A0A;color:#fff;min-height:100vh;display:flex;align-items:center;justify-content:center}
.container{text-align:center;padding:2rem}
h1{font-size:6rem;font-weight:800;color:#FFD000;margin-bottom:0.5rem}
p{font-size:1.25rem;color:rgba(255,255,255,0.7);margin-bottom:2rem}
a{color:#FFD000;text-decoration:none;border-bottom:1px solid rgba(255,208,0,0.3)}
a:hover{border-bottom-color:#FFD000}
</style>
</head>
<body>
<div class="container">
<h1>403</h1>
<p>Access to this resource is not allowed.</p>
<p><a href="/">Return to iqon.com</a></p>
</div>
</body>
</html>
+28
View File
@@ -0,0 +1,28 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>404 — Page Not Found | IQON</title>
<meta name="robots" content="noindex, follow" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Sora:wght@300;400;600;700;800&display=swap" rel="stylesheet" />
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Sora',system-ui,sans-serif;background:#0A0A0A;color:#fff;min-height:100vh;display:flex;align-items:center;justify-content:center}
.container{text-align:center;padding:2rem}
h1{font-size:6rem;font-weight:800;color:#FFD000;margin-bottom:0.5rem}
p{font-size:1.25rem;color:rgba(255,255,255,0.7);margin-bottom:2rem}
a{color:#FFD000;text-decoration:none;border-bottom:1px solid rgba(255,208,0,0.3)}
a:hover{border-bottom-color:#FFD000}
</style>
</head>
<body>
<div class="container">
<h1>404</h1>
<p>The page you are looking for does not exist or has been moved.</p>
<p><a href="/">Return to iqon.com</a></p>
</div>
</body>
</html>
+183
View File
@@ -0,0 +1,183 @@
# IQON Static Deployment — reg.ru
Purpose: пошаговая инструкция для замены WordPress-сайта `iqon.com` на статический прототип через reg.ru файловый менеджер.
## Contents
- [Prerequisites](#prerequisites)
- [Deployment Steps](#deployment-steps)
- [Post-Deploy Verification](#post-deploy-verification)
- [Rollback](#rollback)
- [File Inventory](#file-inventory)
## Prerequisites
- [ ] Backup live site files and database completed (`server-backup-20260518/`)
- [ ] Database archive `u0012812_iqon` confirmed as downloaded
- [ ] Access to reg.ru hosting panel (ISPmanager or file manager)
- [ ] All prototype pages pass local visual QA (`python3 -m http.server 8061`)
## Deployment Steps
### Step 1: Backup Current Live Site
Before any changes, create a dated backup of the live site through the reg.ru panel:
1. Log in to https://www.reg.ru/ → Hosting → Backup
2. Create full backup of `iqon.com` files + `u0012812_iqon` database
3. Confirm backup is downloadable before proceeding
### Step 2: Upload Static Files
Upload the following files to `/var/www/u0012812/data/www/iqon.com/` via reg.ru file manager:
**Root level:**
```
.htaccess ← NEW (from deploy/)
403.html ← NEW (from deploy/)
404.html ← NEW (from deploy/)
index.html ← from repo root
styles.css ← from repo root
script.js ← from repo root
sitemap.xml ← from repo root
robots.txt ← from repo root
```
**Subdirectories:**
```
services/index.html
services/strategy-governance/index.html
services/enterprise-architecture/index.html
services/data-analytics/index.html
services/infrastructure-cloud/index.html
services/security-continuity/index.html
industries/index.html
case-studies/index.html
contact/index.html
```
**Assets (if any):**
```
assets/ ← from repo assets/
```
### Step 3: Remove WordPress Files
After static files are uploaded and verified:
1. **Do NOT delete yet** — first verify the static site loads correctly
2. Once verified, move (not delete) WordPress files to a `_wordpress_backup/` subdirectory:
- `wp-admin/`
- `wp-includes/`
- `wp-content/`
- `wp-login.php`
- `wp-cron.php`
- `wp-settings.php`
- `wp-config.php` (move to `_wordpress_backup/`)
- All other `.php` files in root except `.htaccess`
3. Keep `_wordpress_backup/` for 30 days, then delete
### Step 4: Upload .htaccess
1. Upload `deploy/.htaccess` to the site root
2. This replaces the WordPress `.htaccess`
3. Verify redirect behavior immediately (see below)
### Step 5: Remove WordPress Database User (Later)
The `u0012812_iqon` database can be kept as archive. It is not accessed by the static site.
## Post-Deploy Verification
Run these checks after deployment:
```bash
# 1. Homepage loads
curl -I -L https://iqon.com/
# Expected: 200, security headers present, no WordPress signals
# 2. Security headers present
curl -I https://iqon.com/ | grep -i "X-Content-Type-Options\|X-Frame-Options\|Referrer-Policy\|Content-Security-Policy"
# Expected: all four headers present
# 3. WordPress surfaces blocked
curl -I https://iqon.com/wp-json/
# Expected: 403 Forbidden
curl -I https://iqon.com/xmlrpc.php
# Expected: 403 Forbidden
curl -I https://iqon.com/readme.html
# Expected: 403 Forbidden
# 4. 301 redirects work
curl -I -L https://iqon.com/services-solutions/
# Expected: 301 → https://iqon.com/services/
curl -I -L https://iqon.com/homepage/
# Expected: 301 → https://iqon.com/
# 5. All target pages return 200
for path in / /services/ /services/strategy-governance/ /services/enterprise-architecture/ /services/data-analytics/ /services/infrastructure-cloud/ /services/security-continuity/ /industries/ /case-studies/ /contact/; do
code=$(curl -o /dev/null -s -w "%{http_code}" "https://iqon.com${path}")
echo "${path}${code}"
done
# Expected: all 200
# 6. Contact page has @infobidgebot, no phone/fax
curl -sS https://iqon.com/contact/ | grep -c "infobidgebot"
# Expected: ≥ 2
curl -sS https://iqon.com/contact/ | grep -c "261 2600\|261 2608\|Fax\|fax"
# Expected: 0
# 7. Mixed content check
curl -sS https://iqon.com/ | grep -c "http://www\.iqon\|http://iqon\|http://maps\.google"
# Expected: 0
# 8. Sitemap accessible
curl -I https://iqon.com/sitemap.xml
# Expected: 200
curl -I https://iqon.com/robots.txt
# Expected: 200
```
## Rollback
If the static deployment has issues:
1. Log in to reg.ru hosting panel
2. Restore files from the backup created in Step 1
3. If only `.htaccess` caused the issue: restore the original WordPress `.htaccess` from `server-backup-20260518/.htaccess`
4. The WordPress database and theme files in `_wordpress_backup/` can be restored
The original WordPress `.htaccess` is preserved in `server-backup-20260518/.htaccess`.
## File Inventory
| Source File | Target Path | Action |
|------------|-------------|--------|
| `deploy/.htaccess` | `/` root | Upload (replaces WP .htaccess) |
| `deploy/404.html` | `/` root | Upload |
| `deploy/403.html` | `/` root | Upload |
| `index.html` | `/` root | Upload |
| `styles.css` | `/` root | Upload |
| `script.js` | `/` root | Upload |
| `sitemap.xml` | `/` root | Upload |
| `robots.txt` | `/` root | Upload |
| `services/index.html` | `/services/` | Upload |
| `services/strategy-governance/index.html` | `/services/strategy-governance/` | Upload |
| `services/enterprise-architecture/index.html` | `/services/enterprise-architecture/` | Upload |
| `services/data-analytics/index.html` | `/services/data-analytics/` | Upload |
| `services/infrastructure-cloud/index.html` | `/services/infrastructure-cloud/` | Upload |
| `services/security-continuity/index.html` | `/services/security-continuity/` | Upload |
| `industries/index.html` | `/industries/` | Upload |
| `case-studies/index.html` | `/case-studies/` | Upload |
| `contact/index.html` | `/contact/` | Upload |
| `assets/*` | `/assets/` | Upload (if any) |
---
*Created: 2026-05-20*
*Updated: 2026-05-20*