aee0f09db8
- Datafabrik: Dockerfile fix, agentorkestrering fungerar - Vision: Identify-modell, FAISS, OCR alla testade - API: Alla 7 integrationstester passerade - Upplösare: Entitetsupplösning verifierad
316 lines
8.9 KiB
Markdown
316 lines
8.9 KiB
Markdown
# Landvex SEO Fixes - Actionable Commands
|
|
|
|
## K8: Canonical Fix (CRITICAL)
|
|
|
|
### CloudFront Function Approach (Recommended - fixes ALL pages at once)
|
|
|
|
Create a CloudFront Function to rewrite canonical headers:
|
|
|
|
```javascript
|
|
function handler(event) {
|
|
var request = event.request;
|
|
var response = event.response;
|
|
|
|
// Replace www.landvex.com with landvex.com in response headers
|
|
if (response.headers && response.headers['link']) {
|
|
for (var i = 0; i < response.headers['link'].length; i++) {
|
|
response.headers['link'][i].value = response.headers['link'][i].value.replace(/www\.landvex\.com/g, 'landvex.com');
|
|
}
|
|
}
|
|
|
|
return response;
|
|
}
|
|
```
|
|
|
|
**Alternative: S3 Batch Fix Commands**
|
|
|
|
If you have AWS CLI access to the S3 bucket:
|
|
|
|
```bash
|
|
# Download all HTML files
|
|
aws s3 sync s3://landvex-prod/ ./landvex-html/ --exclude "*" --include "*.html"
|
|
|
|
# Replace all www.landvex.com with landvex.com
|
|
find ./landvex-html/ -name "*.html" -exec sed -i 's/www\.landvex\.com/landvex.com/g' {} +
|
|
|
|
# Upload back
|
|
aws s3 sync ./landvex-html/ s3://landvex-prod/ --exclude "*" --include "*.html"
|
|
```
|
|
|
|
**Pages confirmed with wrong canonical:**
|
|
- /methodology/ → https://www.landvex.com/methodology/
|
|
- /enterprise/ → https://www.landvex.com/enterprise/
|
|
- /about/ → https://www.landvex.com/about/
|
|
- /careers/ → https://www.landvex.com/careers/
|
|
- /contact/ → https://www.landvex.com/contact/
|
|
- /privacy/ → https://www.landvex.com/privacy/
|
|
- /terms/ → https://www.landvex.com/terms/
|
|
- /security/ → https://www.landvex.com/security/
|
|
- /trust/ → https://www.landvex.com/trust/
|
|
- /compliance/ → https://www.landvex.com/compliance/
|
|
- /cookie-policy/ → https://www.landvex.com/cookie-policy/
|
|
- /dpa/ → https://www.landvex.com/dpa/
|
|
- /data-lineage/ → https://www.landvex.com/data-lineage/
|
|
- /data-quality/ → https://www.landvex.com/data-quality/
|
|
- /subprocessors/ → https://www.landvex.com/subprocessors/
|
|
- /sla/ → https://www.landvex.com/sla/
|
|
- /reports/ → https://www.landvex.com/reports/
|
|
- /pilot/ → https://www.landvex.com/pilot/
|
|
- /blog/ → https://www.landvex.com/insights/
|
|
- /accessibility/ → https://www.landvex.com/accessibility/
|
|
- /verticals/* (all 6 verticals)
|
|
- /intelligence/* (all 10 indexes)
|
|
- /cities/* (all 11 cities)
|
|
- /insights/* (all articles)
|
|
|
|
---
|
|
|
|
## K6: /comparison Fix
|
|
|
|
### Option A: 301 Redirect (Recommended)
|
|
|
|
Add to CloudFront function or S3 redirect:
|
|
```
|
|
/comparison → 301 → /
|
|
```
|
|
|
|
S3 redirect metadata:
|
|
```bash
|
|
aws s3api put-object \
|
|
--bucket landvex-prod \
|
|
--key comparison \
|
|
--website-redirect-location / \
|
|
--content-type text/html
|
|
```
|
|
|
|
### Option B: Remove from Navigation
|
|
|
|
Remove this from the nav dropdown on all pages:
|
|
```html
|
|
<div class="dd-label">Compare</div>
|
|
<a href="/comparison/">
|
|
Compare →
|
|
...
|
|
</a>
|
|
```
|
|
|
|
---
|
|
|
|
## K7: /intelligence-map Content-Type
|
|
|
|
```bash
|
|
# Check current metadata
|
|
aws s3api head-object --bucket landvex-prod --key intelligence-map
|
|
|
|
# Fix if needed
|
|
aws s3 cp s3://landvex-prod/intelligence-map s3://landvex-prod/intelligence-map \
|
|
--metadata-directive REPLACE \
|
|
--content-type "text/html; charset=utf-8" \
|
|
--cache-control "max-age=3600"
|
|
```
|
|
|
|
---
|
|
|
|
## H15: Taxonomy Fix
|
|
|
|
### File: /methodology/
|
|
|
|
Change:
|
|
```html
|
|
<p class="hero-sub">Five interlocked layers — from global field observation to verified intelligence.</p>
|
|
```
|
|
To:
|
|
```html
|
|
<p class="hero-sub">Six interlocked layers — from global field observation to verified intelligence.</p>
|
|
```
|
|
|
|
Verify the 6 dimensions are consistently listed:
|
|
1. Opportunity
|
|
2. Growth
|
|
3. Commercial Vitality
|
|
4. Infrastructure Stability
|
|
5. Tourism Potential
|
|
6. Investment Confidence
|
|
|
|
---
|
|
|
|
## H16: Location → Investment Attractiveness
|
|
|
|
### File: / (homepage)
|
|
|
|
Change:
|
|
```html
|
|
<a class="vertical-card" href="/intelligence/investment-attractiveness-index/">
|
|
<h3>Location Attractiveness Index</h3>
|
|
```
|
|
To:
|
|
```html
|
|
<a class="vertical-card" href="/intelligence/investment-attractiveness-index/">
|
|
<h3>Investment Attractiveness Index</h3>
|
|
```
|
|
|
|
---
|
|
|
|
## H30: Pipeline Numbering
|
|
|
|
### Current State:
|
|
- Methodology: 5 layers (01-05)
|
|
- Enterprise: 4 steps (1-4)
|
|
1. Discovery call
|
|
2. Pilot definition
|
|
3. Pilot delivery
|
|
4. Enterprise subscription
|
|
- How it works: 4 steps (1-4)
|
|
|
|
### Recommended Fix:
|
|
|
|
**Option A: Add step 5 to Enterprise (RECOMMENDED)**
|
|
Add after step 4:
|
|
```html
|
|
<div class="process-step">
|
|
<div class="step-num">5</div>
|
|
<h3>Scale & Optimize</h3>
|
|
<p>Continuous intelligence delivery with quarterly reviews, expanded coverage, and integration into your decision workflows.</p>
|
|
</div>
|
|
```
|
|
|
|
Update CSS:
|
|
```css
|
|
.process-steps {
|
|
grid-template-columns: repeat(5, 1fr);
|
|
}
|
|
```
|
|
|
|
**Option B: Standardize all to 4 steps**
|
|
Change Methodology from 5 to 4 layers by merging "Contradiction Engine" and "Red Team Analysis"
|
|
|
|
---
|
|
|
|
## H12: Navigation Standardization
|
|
|
|
### Standard Nav (apply to ALL pages):
|
|
|
|
```html
|
|
<nav>
|
|
<a href="/" class="nav-logo">LandveX</a>
|
|
<div class="nav-links">
|
|
<a href="/#how-it-works">How it works</a>
|
|
<div class="nav-dropdown">
|
|
<a href="/#verticals">Verticals</a>
|
|
<div class="nav-dropdown-menu">
|
|
<a href="/verticals/municipalities/">Municipalities</a>
|
|
<a href="/verticals/infrastructure/">Infrastructure</a>
|
|
<a href="/verticals/property/">Property & Real Estate</a>
|
|
<a href="/verticals/retail/">Retail & F&B</a>
|
|
<a href="/verticals/insurance/">Insurance</a>
|
|
<a href="/verticals/security/">Security</a>
|
|
</div>
|
|
</div>
|
|
<a href="/methodology/">Intelligence</a>
|
|
<a href="/#cities">Cities</a>
|
|
<a href="/insights/">Insights</a>
|
|
<a href="/enterprise/">Enterprise</a>
|
|
<a href="/#contact">Contact</a>
|
|
</div>
|
|
<a href="/#contact" class="btn btn-outline">Get in touch →</a>
|
|
</nav>
|
|
```
|
|
|
|
### Pages needing nav fix:
|
|
- /methodology/ (currently minimal nav)
|
|
- /enterprise/ (has different structure)
|
|
- /verticals/* (has minimal "Back to Landvex" nav)
|
|
- /insights/* (need to verify)
|
|
- /intelligence/* (need to verify)
|
|
|
|
---
|
|
|
|
## K9: Standardization
|
|
|
|
### Copyright Format (apply to ALL footers):
|
|
```html
|
|
<div class="footer-copy">© 2026 Landvex Inc. · Landvex AB (org.nr 559141-7042)</div>
|
|
```
|
|
|
|
### HQ Format (apply consistently):
|
|
```html
|
|
Landvex Inc. · Houston, Texas (US) · Landvex AB · Org.nr 559141-7042 · Tyresö, Sweden (EU)
|
|
```
|
|
|
|
### Status Banner (add to all pages or remove from methodology):
|
|
```html
|
|
<div style="background:#fef3c7;border:1px solid #f59e0b;border-radius:8px;padding:12px 18px;margin:16px 0;font-size:.875rem;color:#92400e;">
|
|
<strong>Pre-launch:</strong> All documentation describes the system as designed for August 2026 launch. No live intelligence is being generated or sold at this time.
|
|
</div>
|
|
```
|
|
|
|
### TLS/Security Statement (add to footer on all pages):
|
|
```html
|
|
<div style="font-size:11px;color:var(--text-muted,#aaa);margin-top:4px">
|
|
All data stored and processed on AWS eu-north-1 (Stockholm). TLS 1.3 encrypted. GDPR compliant.
|
|
</div>
|
|
```
|
|
|
|
---
|
|
|
|
## Additional Issues Found
|
|
|
|
### Intelligence Index Canonicals Pointing to Home
|
|
These pages have canonical pointing to `/` instead of themselves:
|
|
- /intelligence/development-forecast-index/
|
|
- /intelligence/risk-resilience-index/
|
|
|
|
Fix: Change canonical to self-referencing:
|
|
```html
|
|
<link rel="canonical" href="https://landvex.com/intelligence/development-forecast-index/">
|
|
<link rel="canonical" href="https://landvex.com/intelligence/risk-resilience-index/">
|
|
```
|
|
|
|
### CloudFront Cache Errors
|
|
Response shows: `x-cache: Error from cloudfront`
|
|
This may indicate cache configuration issues that should be investigated.
|
|
|
|
### /comparison is Duplicate Content
|
|
Diff between / and /comparison shows identical content. This should be 301 redirected.
|
|
|
|
---
|
|
|
|
## Quick Verification Commands
|
|
|
|
```bash
|
|
# Check canonical on any page
|
|
curl -s https://landvex.com/PAGE/ | grep canonical
|
|
|
|
# Check all pages for www in canonical
|
|
for page in methodology enterprise about contact privacy terms security; do
|
|
echo "=== $page ==="
|
|
curl -s https://landvex.com/$page/ | grep canonical
|
|
done
|
|
|
|
# Check Content-Type
|
|
curl -sI https://landvex.com/intelligence-map | grep content-type
|
|
|
|
# Check redirect chain
|
|
curl -sIL https://www.landvex.com/methodology/ | grep -E "(HTTP|Location)"
|
|
|
|
# Check for CloudFront cache errors
|
|
curl -sI https://landvex.com/ | grep x-cache
|
|
|
|
# Check all intelligence indexes
|
|
for idx in city-health infrastructure-risk investment-attractiveness commercial-opportunity development-forecast growth-velocity neighbourhood-quality risk-resilience urban-growth; do
|
|
echo "=== $idx ==="
|
|
curl -s https://landvex.com/intelligence/$idx-index/ | grep canonical
|
|
done
|
|
```
|
|
|
|
---
|
|
|
|
## Priority Order
|
|
|
|
1. **P0 - K8 (Canonicals)**: Fix immediately - affects SEO indexing
|
|
2. **P1 - K6 (/comparison)**: 301 redirect or remove
|
|
3. **P1 - K7 (Content-Type)**: Fix if confirmed
|
|
4. **P2 - H15/H16/H30**: Content consistency
|
|
5. **P2 - H12**: Navigation standardization
|
|
6. **P3 - K9**: Footer/standardization
|