chore: save iqon static deploy snapshot
This commit is contained in:
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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*
|
||||
Reference in New Issue
Block a user