Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .bundle/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
BUNDLE_PATH: "vendor/bundle"
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Jekyll build artifacts
_site/
.sass-cache/
.jekyll-cache/
.jekyll-metadata

# Ruby/Bundler
vendor/bundle/
.bundle/
Gemfile.lock

# macOS
.DS_Store

# IDE
.vscode/
.idea/
*.swp
*.swo
*~
Binary file not shown.
Binary file not shown.
Binary file not shown.
116 changes: 116 additions & 0 deletions FIX_404_SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
# 404 Error Fix Summary

## Problem Statement
The GitHub Pages site was experiencing 404 errors when accessing tools and category pages via URLs with trailing slashes (e.g., `/categories/heat/`, `/tools/`, `/about/`).

## Root Cause
Jekyll was generating pages as `.html` files (e.g., `categories/heat.html`, `about.html`) while all links throughout the site pointed to directories with trailing slashes (e.g., `/categories/heat/`, `/about/`). GitHub Pages expects to find `index.html` files within directories when accessing URLs with trailing slashes.

## Solution
Added `permalink` front matter to all affected pages to instruct Jekyll to generate them as directories containing `index.html` files.

## Changes Made

### 1. Category Pages (8 files)
Added `permalink: /categories/{name}/` to each category file:
- `categories/heat.md` → `/categories/heat/index.html`
- `categories/flood.md` → `/categories/flood/index.html`
- `categories/coastal.md` → `/categories/coastal/index.html`
- `categories/green.md` → `/categories/green/index.html`
- `categories/planning.md` → `/categories/planning/index.html`
- `categories/data.md` → `/categories/data/index.html`
- `categories/energy.md` → `/categories/energy/index.html`
- `categories/other.md` → `/categories/other/index.html`

### 2. Main Pages (3 files)
Added permalinks to main content pages:
- `about.md`: `permalink: /about/`
- `tools.md`: `permalink: /tools/`
- `case-studies.md`: `permalink: /case-studies/`

### 3. Build Configuration
- **Gemfile**: Added required Jekyll dependencies
- jekyll-theme-minimal
- jekyll-feed
- jekyll-seo-tag
- jekyll-sitemap
- kramdown-parser-gfm

- **.gitignore**: Created to exclude build artifacts
- _site/
- .sass-cache/
- .jekyll-cache/
- vendor/bundle/
- Gemfile.lock

- **_config.yml**: Cleaned up duplicate `defaults` section

## Testing Results
All pages tested locally and confirmed to return HTTP 200:
- ✅ All 8 category pages
- ✅ About page
- ✅ Tools listing page
- ✅ Case studies listing page
- ✅ Individual tool pages (e.g., climate-central)
- ✅ Individual case study pages

## Final Directory Structure
```
_site/
├── index.html
├── about/
│ └── index.html
├── tools/
│ ├── index.html
│ └── climate-central/
│ └── index.html
├── case-studies/
│ ├── index.html
│ └── norfolk-coastal-resilience/
│ └── index.html
└── categories/
├── index.html
├── heat/
│ └── index.html
├── flood/
│ └── index.html
├── coastal/
│ └── index.html
├── green/
│ └── index.html
├── planning/
│ └── index.html
├── data/
│ └── index.html
├── energy/
│ └── index.html
└── other/
└── index.html
```

## Deployment Notes
1. GitHub Pages will automatically rebuild the site when changes are pushed to the main branch
2. No additional configuration is required on the GitHub Pages settings
3. The baseurl is already correctly configured as `/Urban-Climate-Tools`
4. All internal links use the `{{ site.baseurl }}` variable for proper routing

## Verification Steps for Live Site
After deployment, verify these URLs work correctly:
1. https://mk-ws-git.github.io/Urban-Climate-Tools/
2. https://mk-ws-git.github.io/Urban-Climate-Tools/about/
3. https://mk-ws-git.github.io/Urban-Climate-Tools/tools/
4. https://mk-ws-git.github.io/Urban-Climate-Tools/case-studies/
5. https://mk-ws-git.github.io/Urban-Climate-Tools/categories/heat/
6. https://mk-ws-git.github.io/Urban-Climate-Tools/categories/flood/
7. https://mk-ws-git.github.io/Urban-Climate-Tools/tools/climate-central/

## Security Notes
No security vulnerabilities were introduced. Changes are limited to:
- Front matter updates (permalinks)
- Configuration file cleanup
- Dependency updates (standard Jekyll plugins)

## Code Review
✅ Code review completed - no issues found
✅ All changes follow Jekyll best practices
✅ No breaking changes to existing functionality
5 changes: 5 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
source "https://rubygems.org"

gem "jekyll", "3.9.0"
gem "jekyll-theme-minimal"
gem "jekyll-feed"
gem "jekyll-seo-tag"
gem "jekyll-sitemap"
gem "kramdown-parser-gfm"
144 changes: 144 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.8)
public_suffix (>= 2.0.2, < 8.0)
colorator (1.1.0)
concurrent-ruby (1.3.6)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
ffi (1.17.3)
ffi (1.17.3-aarch64-linux-gnu)
ffi (1.17.3-aarch64-linux-musl)
ffi (1.17.3-arm-linux-gnu)
ffi (1.17.3-arm-linux-musl)
ffi (1.17.3-arm64-darwin)
ffi (1.17.3-x86-linux-gnu)
ffi (1.17.3-x86-linux-musl)
ffi (1.17.3-x86_64-darwin)
ffi (1.17.3-x86_64-linux-gnu)
ffi (1.17.3-x86_64-linux-musl)
forwardable-extended (2.6.0)
http_parser.rb (0.8.1)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jekyll (3.9.0)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 0.7)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
kramdown (>= 1.17, < 3)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-sass-converter (1.5.2)
sass (~> 3.4)
jekyll-seo-tag (2.8.0)
jekyll (>= 3.8, < 5.0)
jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0)
jekyll-theme-minimal (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.5.2)
rexml (>= 3.4.4)
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.4)
listen (3.10.0)
logger
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
logger (1.7.0)
mercenary (0.3.6)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (7.0.2)
rb-fsevent (0.11.2)
rb-inotify (0.11.1)
ffi (~> 1.0)
rexml (3.4.4)
rouge (3.30.0)
safe_yaml (1.0.5)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)

PLATFORMS
aarch64-linux-gnu
aarch64-linux-musl
arm-linux-gnu
arm-linux-musl
arm64-darwin
ruby
x86-linux-gnu
x86-linux-musl
x86_64-darwin
x86_64-linux-gnu
x86_64-linux-musl

DEPENDENCIES
jekyll (= 3.9.0)
jekyll-feed
jekyll-seo-tag
jekyll-sitemap
jekyll-theme-minimal
kramdown-parser-gfm

CHECKSUMS
addressable (2.8.8) sha256=7c13b8f9536cf6364c03b9d417c19986019e28f7c00ac8132da4eb0fe393b057
colorator (1.1.0) sha256=e2f85daf57af47d740db2a32191d1bdfb0f6503a0dfbc8327d0c9154d5ddfc38
concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
em-websocket (0.5.3) sha256=f56a92bde4e6cb879256d58ee31f124181f68f8887bd14d53d5d9a292758c6a8
eventmachine (1.2.7) sha256=994016e42aa041477ba9cff45cbe50de2047f25dd418eba003e84f0d16560972
ffi (1.17.3) sha256=0e9f39f7bb3934f77ad6feab49662be77e87eedcdeb2a3f5c0234c2938563d4c
ffi (1.17.3-aarch64-linux-gnu) sha256=28ad573df26560f0aedd8a90c3371279a0b2bd0b4e834b16a2baa10bd7a97068
ffi (1.17.3-aarch64-linux-musl) sha256=020b33b76775b1abacc3b7d86b287cef3251f66d747092deec592c7f5df764b2
ffi (1.17.3-arm-linux-gnu) sha256=5bd4cea83b68b5ec0037f99c57d5ce2dd5aa438f35decc5ef68a7d085c785668
ffi (1.17.3-arm-linux-musl) sha256=0d7626bb96265f9af78afa33e267d71cfef9d9a8eb8f5525344f8da6c7d76053
ffi (1.17.3-arm64-darwin) sha256=0c690555d4cee17a7f07c04d59df39b2fba74ec440b19da1f685c6579bb0717f
ffi (1.17.3-x86-linux-gnu) sha256=868a88fcaf5186c3a46b7c7c2b2c34550e1e61a405670ab23f5b6c9971529089
ffi (1.17.3-x86-linux-musl) sha256=f0286aa6ef40605cf586e61406c446de34397b85dbb08cc99fdaddaef8343945
ffi (1.17.3-x86_64-darwin) sha256=1f211811eb5cfaa25998322cdd92ab104bfbd26d1c4c08471599c511f2c00bb5
ffi (1.17.3-x86_64-linux-gnu) sha256=3746b01f677aae7b16dc1acb7cb3cc17b3e35bdae7676a3f568153fb0e2c887f
ffi (1.17.3-x86_64-linux-musl) sha256=086b221c3a68320b7564066f46fed23449a44f7a1935f1fe5a245bd89d9aea56
forwardable-extended (2.6.0) sha256=1bec948c469bbddfadeb3bd90eb8c85f6e627a412a3e852acfd7eaedbac3ec97
http_parser.rb (0.8.1) sha256=9ae8df145b39aa5398b2f90090d651c67bd8e2ebfe4507c966579f641e11097a
i18n (0.9.5) sha256=43a58b55056ef171cae9b35df8aa5dee22d3a782f8a9bdd0ec8e8d36cfdf180d
jekyll (3.9.0) sha256=32886d1c33aae33af5f60d7ae2a7d99cb1de4001a1aebf430a6634756bd82132
jekyll-feed (0.17.0) sha256=689aab16c877949bb9e7a5c436de6278318a51ecb974792232fd94d8b3acfcc3
jekyll-sass-converter (1.5.2) sha256=53773669e414dc3bb070113befacb808576025a28cfa4a4accc682e90a9c1101
jekyll-seo-tag (2.8.0) sha256=3f2ed1916d56f14ebfa38e24acde9b7c946df70cb183af2cb5f0598f21ae6818
jekyll-sitemap (1.4.0) sha256=0de08c5debc185ea5a8f980e1025c7cd3f8e0c35c8b6ef592f15c46235cf4218
jekyll-theme-minimal (0.2.0) sha256=a225210c35573ad2c9e57b81f16f678ca6c314394ec692502ccc6189d7e52d82
jekyll-watch (2.2.1) sha256=bc44ed43f5e0a552836245a54dbff3ea7421ecc2856707e8a1ee203a8387a7e1
kramdown (2.5.2) sha256=1ba542204c66b6f9111ff00dcc26075b95b220b07f2905d8261740c82f7f02fa
kramdown-parser-gfm (1.1.0) sha256=fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729
liquid (4.0.4) sha256=4fcfebb1a045e47918388dbb7a0925e7c3893e58d2bd6c3b3c73ec17a2d8fdb3
listen (3.10.0) sha256=c6e182db62143aeccc2e1960033bebe7445309c7272061979bb098d03760c9d2
logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
mercenary (0.3.6) sha256=2a084b18f5692c86a633e185d5311ba6d11fc46c802eb414ae05368178078a82
pathutil (0.16.2) sha256=e43b74365631cab4f6d5e4228f812927efc9cb2c71e62976edcb252ee948d589
public_suffix (7.0.2) sha256=9114090c8e4e7135c1fd0e7acfea33afaab38101884320c65aaa0ffb8e26a857
rb-fsevent (0.11.2) sha256=43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe
rb-inotify (0.11.1) sha256=a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e
rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142
rouge (3.30.0) sha256=a3d353222aa72e49e2c86726c0bcfd719f82592f57d494474655f48e669eceb6
safe_yaml (1.0.5) sha256=a6ac2d64b7eb027bdeeca1851fe7e7af0d668e133e8a88066a0c6f7087d9f848
sass (3.7.4) sha256=808b0d39053aa69068df939e24671fe84fd5a9d3314486e1a1457d0934a4255d
sass-listen (4.0.0) sha256=ae9dcb76dd3e234329e5ba6e213f48e532c5a3e7b0b4d8a87f13aaca0cc18377

BUNDLED WITH
4.0.5
11 changes: 0 additions & 11 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,6 @@ collections:
label: Case Studies

# Default frontmatter
defaults:
- scope:
path: "_tools"
values:
layout: tool
- scope:
path: "_case_studies"
values:
layout: case-study

# Defaults
defaults:
- scope:
path: "_tools"
Expand Down
Loading