chore: record iqon live deployment

This commit is contained in:
Sergei Vasilev
2026-05-20 18:17:20 +03:00
parent 2128c14c7f
commit b5144a501b
16 changed files with 82 additions and 23 deletions
+2 -1
View File
@@ -11,6 +11,7 @@
<link rel="stylesheet" href="../styles.css?v=20260520-qa7" />
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar">
<a class="brand" href="/"><span class="brand-name">iqon</span></a>
<nav class="main-nav" aria-label="Primary">
@@ -22,7 +23,7 @@
</nav>
<a class="nav-cta" href="/contact/">Book Discovery Call</a>
</header>
<main>
<main id="main">
<section class="page-hero">
<p class="eyebrow">Cases</p>
<h1>Selected outcome snapshots.</h1>
+2 -1
View File
@@ -11,6 +11,7 @@
<link rel="stylesheet" href="../styles.css?v=20260520-qa7" />
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar">
<a class="brand" href="/"><span class="brand-name">iqon</span></a>
<nav class="main-nav" aria-label="Primary">
@@ -22,7 +23,7 @@
</nav>
<a class="nav-cta" href="https://t.me/infobidgebot" rel="noopener" target="_blank">@infobidgebot</a>
</header>
<main>
<main id="main">
<section class="page-hero">
<p class="eyebrow">Contact</p>
<h1>Start with the decision in front of you.</h1>
+3 -4
View File
@@ -3,6 +3,9 @@
# Created: 2026-05-20
# Updated: 2026-05-20
# ── Prefer static entrypoint while WordPress files remain for rollback ──
DirectoryIndex index.html index.php
# ── Security headers ──────────────────────────────────────────────
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
@@ -16,10 +19,6 @@
<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]
+2 -2
View File
@@ -147,8 +147,8 @@ curl -I https://iqon.com/robots.txt
If the static deployment has issues:
1. Log in to reg.ru hosting panel
2. Restore files from the backup created in Step 1
1. Restore the pre-static files from `/private/tmp/iqon-remote-prestatic-20260520-ftp/` if only root entry files changed
2. Log in to reg.ru hosting panel if a full restore is required
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
+2 -1
View File
@@ -17,6 +17,7 @@
<link rel="stylesheet" href="./styles.css?v=20260520-qa7" />
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar">
<a class="brand" href="/">
<svg class="brand-mark" viewBox="0 0 44 44" aria-hidden="true">
@@ -57,7 +58,7 @@
<a class="nav-cta" href="/contact/">Book Discovery Call</a>
</header>
<main>
<main id="main">
<section class="hero" id="approach">
<div class="hero-copy reveal">
<p class="eyebrow">Our Proprietary Consultive Approach</p>
+2 -1
View File
@@ -11,6 +11,7 @@
<link rel="stylesheet" href="../styles.css?v=20260520-qa7" />
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar">
<a class="brand" href="/"><span class="brand-name">iqon</span></a>
<nav class="main-nav" aria-label="Primary">
@@ -22,7 +23,7 @@
</nav>
<a class="nav-cta" href="/contact/">Book Discovery Call</a>
</header>
<main>
<main id="main">
<section class="page-hero">
<p class="eyebrow">Industries</p>
<h1>Domain-aware technology decisions.</h1>
+39 -6
View File
@@ -11,7 +11,7 @@ Purpose: зафиксировать локальную готовность ст
## Scope
Проверка выполнена локально 20 May 2026. Удалённый деплой на reg.ru не выполнялся.
Локальная проверка выполнена 20 May 2026. Удалённый deploy на reg.ru выполнен 20 May 2026 через FTP без удаления WordPress-файлов.
## Implemented
@@ -23,6 +23,9 @@ Purpose: зафиксировать локальную готовность ст
| Security headers draft | `deploy/.htaccess` CSP tightened and `www.iqon.com` canonical redirect added |
| Content brief | Case-study and contact blockers marked resolved for launch |
| Mobile CTA | Contact CTA heading wrap fixed at 390px |
| Live upload | Static files uploaded to `www/iqon.com` by FTP |
| Live redirect loop | Removed Apache `%{HTTPS}` force block behind nginx |
| Accessibility | Skip link added to all static pages |
## Verification
@@ -97,13 +100,43 @@ Observed signal:
## Remaining Gate
Before remote deployment:
Before destructive cleanup:
1. Confirm `u0012812_iqon` database archive is downloaded.
2. Confirm fresh live file backup exists in reg.ru panel.
3. Confirm deployment window for replacing WordPress files with static files.
4. Execute `deploy/README.md` upload steps.
5. Run post-deploy verification from `deploy/README.md`.
2. Keep WordPress files on server until rollback window closes.
3. Decide whether to move WordPress files into `_wordpress_backup/` later.
4. Do not delete `wp-content`, `wp-admin`, `wp-includes`, or DB until explicit cleanup approval.
## Live Deployment
FTP target:
```text
server71.hosting.reg.ru:/www/iqon.com/
```
Rollback set downloaded locally before upload:
```text
/private/tmp/iqon-remote-prestatic-20260520-ftp/
```
Observed live verification:
```bash
scripts/iqon-phase1-verify.sh https://iqon.com
```
Final signal:
- `[OK] iqon Phase 1 verification passed for https://iqon.com`.
- 10 target pages returned `200`.
- `/sitemap.xml` returned `200`.
- `/robots.txt` returned `200`.
- `/wp-json/` returned `403`.
- `/readme.html` returned `403`.
- `/homepage/` redirected to `/`.
- `/services-solutions/` redirected to `/services/`.
---
+1
View File
@@ -52,6 +52,7 @@ Browser tool:
- Added CSS/JS cache-busting query on prototype pages.
- Kept target URLs as real paths instead of section anchors.
- Added mobile CTA text constraint for contact and other CTA bands.
- Added skip link target for deployed static pages.
## Verification
+1 -1
View File
@@ -56,7 +56,7 @@ if HOME="$(fetch_home)"; then
printf '%s\n' "$HOME" | rg -q 'name=["'\'']viewport["'\'']' \
&& pass 'viewport present' \
|| fail 'viewport missing'
printf '%s\n' "$HOME" | rg -q 'iqon-skip-link' \
printf '%s\n' "$HOME" | rg -q 'class=["'\''][^"'\'']*(iqon-skip-link|skip-link)' \
&& pass 'skip link present' \
|| fail 'skip link missing'
printf '%s\n' "$HOME" | rg -q 'http://www\.iqon\.com|http://iqon\.com|http://maps\.google\.com|http://maps\.googleapis\.com' \
+2 -1
View File
@@ -11,8 +11,9 @@
<link rel="stylesheet" href="../../styles.css?v=20260520-qa7" />
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header>
<main>
<main id="main">
<section class="page-hero"><p class="eyebrow">Service</p><h1>Decision support leaders can trust.</h1><p class="lead">IQON helps teams move from fragmented reporting to governed data products and executive visibility.</p></section>
<section class="detail-grid">
<article class="detail-panel"><h2>Business Problem</h2><p>Reports conflict, ownership is unclear, and decisions slow down because business users do not trust the data.</p></article>
+2 -1
View File
@@ -11,8 +11,9 @@
<link rel="stylesheet" href="../../styles.css?v=20260520-qa7" />
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header>
<main>
<main id="main">
<section class="page-hero"><p class="eyebrow">Service</p><h1>Architecture that connects business and delivery.</h1><p class="lead">IQON maps capabilities, platforms, dependencies, and constraints so transformation work can proceed with fewer surprises.</p></section>
<section class="detail-grid">
<article class="detail-panel"><h2>Business Problem</h2><p>Systems evolve in fragments. Teams need a coherent architecture that supports change without blocking delivery.</p></article>
+2 -1
View File
@@ -11,6 +11,7 @@
<link rel="stylesheet" href="../styles.css?v=20260520-qa7" />
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar">
<a class="brand" href="/"><span class="brand-name">iqon</span></a>
<nav class="main-nav" aria-label="Primary">
@@ -22,7 +23,7 @@
</nav>
<a class="nav-cta" href="/contact/">Book Discovery Call</a>
</header>
<main>
<main id="main">
<section class="page-hero">
<p class="eyebrow">Services</p>
<h1>Technology advisory built around decisions.</h1>
+2 -1
View File
@@ -11,8 +11,9 @@
<link rel="stylesheet" href="../../styles.css?v=20260520-qa7" />
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header>
<main>
<main id="main">
<section class="page-hero"><p class="eyebrow">Service</p><h1>Infrastructure built for resilience and control.</h1><p class="lead">IQON assesses operating risk, modernization options, service models, and cloud decisions through a business lens.</p></section>
<section class="detail-grid">
<article class="detail-panel"><h2>Business Problem</h2><p>Infrastructure cost, reliability, and service quality are difficult to steer when ownership and priorities are fragmented.</p></article>
+2 -1
View File
@@ -11,8 +11,9 @@
<link rel="stylesheet" href="../../styles.css?v=20260520-qa7" />
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header>
<main>
<main id="main">
<section class="page-hero"><p class="eyebrow">Service</p><h1>Risk readiness that fits the business.</h1><p class="lead">IQON helps organizations improve security posture, regulatory confidence, continuity planning, and recovery capability.</p></section>
<section class="detail-grid">
<article class="detail-panel"><h2>Business Problem</h2><p>Security and continuity programs often sit apart from business priorities, making investment and accountability unclear.</p></article>
+2 -1
View File
@@ -11,8 +11,9 @@
<link rel="stylesheet" href="../../styles.css?v=20260520-qa7" />
</head>
<body>
<a class="skip-link" href="#main">Skip to content</a>
<header class="topbar"><a class="brand" href="/"><span class="brand-name">iqon</span></a><nav class="main-nav" aria-label="Primary"><a href="/">Home</a><a href="/services/" aria-current="page">Services</a><a href="/industries/">Industries</a><a href="/case-studies/">Cases</a><a href="/contact/">Contact</a></nav><a class="nav-cta" href="/contact/">Book Discovery Call</a></header>
<main>
<main id="main">
<section class="page-hero"><p class="eyebrow">Service</p><h1>Strategy and governance for technology decisions.</h1><p class="lead">When priorities compete and delivery confidence is low, IQON structures decision rights, investment logic, and execution governance.</p></section>
<section class="detail-grid">
<article class="detail-panel"><h2>Business Problem</h2><p>Leadership needs a way to compare initiatives, fund the right work, and see risk before execution cost compounds.</p></article>
+16
View File
@@ -98,6 +98,22 @@ body {
padding: 0.7rem 1rem;
}
.skip-link {
position: absolute;
left: -999px;
top: 0.75rem;
z-index: 50;
padding: 0.65rem 0.9rem;
background: var(--ink);
color: #fff;
text-decoration: none;
font-weight: 700;
}
.skip-link:focus {
left: 1rem;
}
.hero {
display: grid;
grid-template-columns: 1.2fr 1fr;