landvex: Fixar och tester klara för alla komponenter
- Datafabrik: Dockerfile fix, agentorkestrering fungerar - Vision: Identify-modell, FAISS, OCR alla testade - API: Alla 7 integrationstester passerade - Upplösare: Entitetsupplösning verifierad
This commit is contained in:
@@ -0,0 +1,315 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user