{
  "format": "daleg-redirects/v1",
  "sourceDomain": "hometownstorageva.com",
  "sourceOrigin": "https://www.hometownstorageva.com",
  "targetSite": null,
  "generatedAt": "2026-10-26T06:59:16.023Z",
  "howToUse": [
    "Each entry maps an old path (\"from\") on this domain to a new path (\"to\") on the same domain after it moves to the Tenant site.",
    "status 301 = permanent redirect; status 410 = the page is gone on purpose (\"to\" is null).",
    "Apply only entries with \"ready\": true. Entries with \"ready\": false contain a placeholder (see \"placeholders\") to fill in first.",
    "Entries with \"needsReview\": true were matched with low confidence or by fallback: check them before launch.",
    "Entries with \"createTarget\": true point to a content page that must be created on the new site with that path.",
    "When \"matchQuery\" is true, the query string in \"from\" is part of the match (e.g. ?page_id=12); otherwise match the path with or without a trailing slash and ignore the query string.",
    "List ready redirects as tab-separated lines: jq -r '.redirects[] | select(.ready) | [.status, .from, (.to // \"\")] | @tsv' FILE",
    "Example loop: jq -c '.redirects[] | select(.ready)' FILE | while read -r r; do from=$(jq -r .from <<<\"$r\"); to=$(jq -r \".to // empty\" <<<\"$r\"); status=$(jq -r .status <<<\"$r\"); echo \"$status $from $to\"; done"
  ],
  "counts": {
    "total": 35,
    "ready": 31,
    "needsReview": 23,
    "placeholders": 4,
    "gone": 0
  },
  "placeholders": {
    "{tenantFacilityId}": "The facility’s numeric Tenant property ID, from its URL on the new site. The entry’s \"facility\" field says which facility."
  },
  "redirects": [
    {
      "from": "/pages/map",
      "to": "/storage-units/virginia/lynchburg/hometown-storage-timberlake-rd-{tenantFacilityId}/",
      "status": 301,
      "matchQuery": false,
      "ready": false,
      "needsReview": false,
      "confidence": 0.97,
      "kind": "facility",
      "method": "facility-data",
      "createTarget": false,
      "reason": "Old page for Hometown Storage – Timberlake Rd (Lynchburg, VA), matched by its address.",
      "facility": "Hometown Storage – Timberlake Rd (Lynchburg, VA)",
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/pages/rent",
      "to": "/storage-units/virginia/lynchburg/hometown-storage-timberlake-rd-{tenantFacilityId}/",
      "status": 301,
      "matchQuery": false,
      "ready": false,
      "needsReview": false,
      "confidence": 0.85,
      "kind": "facility-subpage",
      "method": "claude",
      "createTarget": false,
      "reason": "Rent units in Lynchburg; the only facility",
      "facility": "Hometown Storage – Timberlake Rd (Lynchburg, VA)",
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/self-storage-reservations",
      "to": "/storage-units/virginia/lynchburg/hometown-storage-timberlake-rd-{tenantFacilityId}/",
      "status": 301,
      "matchQuery": false,
      "ready": false,
      "needsReview": false,
      "confidence": 0.85,
      "kind": "facility-subpage",
      "method": "claude",
      "createTarget": false,
      "reason": "Reservations page for the only facility",
      "facility": "Hometown Storage – Timberlake Rd (Lynchburg, VA)",
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/waiting_list",
      "to": "/storage-units/virginia/lynchburg/hometown-storage-timberlake-rd-{tenantFacilityId}/",
      "status": 301,
      "matchQuery": false,
      "ready": false,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "facility-subpage",
      "method": "claude",
      "createTarget": false,
      "reason": "Waiting list for units; single facility",
      "facility": "Hometown Storage – Timberlake Rd (Lynchburg, VA)",
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/self-storage",
      "to": "/storage-units/locations/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": false,
      "confidence": 0.93,
      "kind": "locations-index",
      "method": "rule",
      "createTarget": false,
      "reason": "Matches the standard page rule for locations-index.",
      "facility": null,
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/password_resets/new",
      "to": "/login/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.8,
      "kind": "pay-login",
      "method": "claude",
      "createTarget": false,
      "reason": "Password reset for tenant login",
      "facility": null,
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/username_recoveries/new",
      "to": "/login/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": false,
      "confidence": 0.85,
      "kind": "pay-login",
      "method": "claude",
      "createTarget": false,
      "reason": "Username recovery for tenant account login",
      "facility": null,
      "sources": [
        "archive",
        "crawl"
      ]
    },
    {
      "from": "/contact",
      "to": "/contact-us/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": false,
      "confidence": 0.97,
      "kind": "contact",
      "method": "rule",
      "createTarget": false,
      "reason": "Matches the standard page rule for contact.",
      "facility": null,
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/pages/contact",
      "to": "/contact-us/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": false,
      "confidence": 0.85,
      "kind": "contact",
      "method": "claude",
      "createTarget": false,
      "reason": "Contact Us page for the single company site",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/boat-storage",
      "to": "/storage-types/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.8,
      "kind": "storage-type",
      "method": "claude",
      "createTarget": false,
      "reason": "Boat storage type; no specific page, use storage types index",
      "facility": null,
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/rv-storage",
      "to": "/storage-types/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.8,
      "kind": "storage-type",
      "method": "claude",
      "createTarget": false,
      "reason": "RV storage type; no specific page, use storage types index",
      "facility": null,
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/about-us",
      "to": "/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.6,
      "kind": "company",
      "method": "claude",
      "createTarget": false,
      "reason": "Old about-us page, no company page target available; homepage fallback",
      "facility": null,
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/pages/tenantprotection",
      "to": "/company-pages/tenant-protection/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.65,
      "kind": "company",
      "method": "claude",
      "createTarget": true,
      "reason": "Tenant protection plan page; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog",
      "to": "/blogs/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": false,
      "confidence": 0.95,
      "kind": "blog-index",
      "method": "rule",
      "createTarget": false,
      "reason": "Matches the standard page rule for blog-index.",
      "facility": null,
      "sources": [
        "archive",
        "crawl"
      ]
    },
    {
      "from": "/category/moving",
      "to": "/blogs/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": false,
      "confidence": 0.85,
      "kind": "blog-index",
      "method": "rule",
      "createTarget": false,
      "reason": "Matches the standard page rule for blog-index.",
      "facility": null,
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/category/storage",
      "to": "/blogs/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": false,
      "confidence": 0.85,
      "kind": "blog-index",
      "method": "rule",
      "createTarget": false,
      "reason": "Matches the standard page rule for blog-index.",
      "facility": null,
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/pages/blog",
      "to": "/blogs/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": false,
      "confidence": 0.9,
      "kind": "blog-index",
      "method": "claude",
      "createTarget": false,
      "reason": "Company blog listing page",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/7-tips-to-make-the-most-of-your-self-storage-unit",
      "to": "/blogs/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.6,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": false,
      "reason": "Old tips article, 404 since 2020; fall back to blog index",
      "facility": null,
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/blog/Autopay-benefits",
      "to": "/blogs/autopay-benefits/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on AutoPay benefits; content to migrate, slug lowercased",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/Categorizestorage",
      "to": "/blogs/categorizestorage/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on categorizing storage; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/choosing-storage-unit",
      "to": "/blogs/choosing-storage-unit/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on choosing a storage unit; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/findingblog",
      "to": "/blogs/findingblog/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on finding and renting a unit; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/guide-to-moving-to-virginia",
      "to": "/blogs/guide-to-moving-to-virginia/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post moving-to-Virginia guide; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/how-to-maximize-storage-unit-space",
      "to": "/blogs/how-to-maximize-storage-unit-space/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on maximizing unit space; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/how-to-store-furniture",
      "to": "/blogs/how-to-store-furniture/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on storing furniture; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/needastorageunit",
      "to": "/blogs/needastorageunit/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on needing a storage unit; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/packing-storage-boxes",
      "to": "/blogs/packing-storage-boxes/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on packing boxes; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/packingboxes",
      "to": "/blogs/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": false,
      "reason": "Dead duplicate-style blog slug about packing boxes; blog index fallback",
      "facility": null,
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/blog/prepareforstorm",
      "to": "/blogs/prepareforstorm/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on storm preparation; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/renting-online",
      "to": "/blogs/renting-online/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on renting online; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/safestuff",
      "to": "/blogs/safestuff/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on storage security; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/self-storage-timberlake-va",
      "to": "/blogs/self-storage-timberlake-va/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on choosing unit in Timberlake VA; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/blog/summer-move",
      "to": "/blogs/summer-move/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": true,
      "reason": "Blog post on summer moving tips; content to migrate",
      "facility": null,
      "sources": [
        "archive",
        "crawl",
        "sitemap"
      ]
    },
    {
      "from": "/when-its-time-to-move-out-of-your-self-storage-space",
      "to": "/blogs/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": true,
      "confidence": 0.7,
      "kind": "blog-post",
      "method": "claude",
      "createTarget": false,
      "reason": "Old move-out article, 404; blog index fallback",
      "facility": null,
      "sources": [
        "archive"
      ]
    },
    {
      "from": "/self-storage-tips",
      "to": "/storagetips/company-tips/",
      "status": 301,
      "matchQuery": false,
      "ready": true,
      "needsReview": false,
      "confidence": 0.85,
      "kind": "tips",
      "method": "claude",
      "createTarget": false,
      "reason": "Self storage tips listing",
      "facility": null,
      "sources": [
        "archive"
      ]
    }
  ]
}
