SlideShare a Scribd company logo
The web is made of links.
Don’t break them.
A method to gradually transition a large site
to a CMS on your own timetable and keep it
transparent to your visitors while doing it.
We’ve had a website for a long time – since April 1995.
Our first sitemap. It’s a web of links! Get it?!? Guess what – it still is.
Upper level pages recently redesigned and using a CMS. Only 1% of total pages though.
Some of our 90’s-era sites still get a lot of traffic.
All of whom had varying web skills (if any) and were allowed to do anything they wanted.
115
known contributors
Defined as pages that have a different design then the top-level visit-oriented pages.
115
known contributors
88
current sub-sites
We’ve ended up with a LOT of content in 18 years.
115
known contributors
88
current sub-sites
27,482
total web pages
Plus an unknowable amount of browser bookmarks & print references.
115
known contributors
88
current sub-sites
27,482
total web pages
501,170
incoming links from other sites
Screenshots of our collection homepages in 2010. Definite branding and usability issues.
The master plan. (BTW, the web office has a staff of 2.75 FTE)
Um, yeah.
Reality check #1
We will never have enough time or staff
to update it all at once.
Time to panic.
Reality check #1
Any CMS we choose will have a different way
of writing links and will break our old URLs.
Reality check #2
We will never have enough time or staff
to update it all at once.
Don’t waste your time fighting this. Let your new CMS do its thing.
Bad idea #1: We have to get our new CMS
to follow our old URL scheme!
New: www.flmnh.ufl.edu/visit/shopping/butterfly-plant-sales/
Old: www.flmnh.ufl.edu/butterflies/plants.htm
This is not a solution. This still breaks stuff.
Bad idea #2: Let’s squirrel away all of our old
content to an “archive” area of the site!
http://archive.yoursite.org/old-stuff.htm
You’ll need to admin access to your servers to try this yourself.
This is how we handled it.
Just one CMS? Nah, let’s make it interesting and run two!
A reverse proxy allows multiple servers to deliver pages using the same URL space.
We chose to use Apache, but any reverse proxy/gateway will do.
Setting up a proxy on Apache is pretty simple, but read the documentation for more details.
Apache mod_proxy Module
RewriteRule (.*) http://www.flmnh.ufl.edu
ProxyPassReverse / http://iiswww.flmnh.ufl.edu
More info: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
Tell the proxy what is on your legacy server and serve it immediately if there is a match.
Be thorough - list every possible legacy directory path in your conf file. (We have 137.)
Configuration File Rewrite Rules
RewriteCond %{REQUEST_URI} ^/annualreports(.*) [OR,NC]
RewriteCond %{REQUEST_URI} ^/anthro/caribarch(.*) [OR,NC]
RewriteCond %{REQUEST_URI} ^/caribarch (.*) [OR,NC]
RewriteCond %{REQUEST_URI} ^/bats(.*) [OR,NC]
RewriteCond %{REQUEST_URI} ^/birds(.*) [NC]
More info: http://httpd.apache.org/docs/current/configuring.html
Our legacy server happens to run IIS. YLMV.
If the page requested is not on the legacy server, send it on to your main CMS.
The CMS will serve the page if it is housed on that system.
If the page is not on your main CMS either, send it on for further processing.
Redirect app built in-house with PHP/MySQL backend using CakePHP framework for GUI.
The app can send it to other systems (if you go that route) or redirect offsite.
Be sure to terminate with a 404 if it truly is a bogus link.
Plug in your legacy/CMS situation and hopefully this can help you.
My awesome coworkers. Couldn’t have pulled this off without ‘em.
Credits
Taylor Wilson
Web Developer
Warren Brown
Enterprise Systems Coordinator
Andy Lievertz
Systems Administrator
Contact me if you have any questions or want more techy details.
Sarah Fazenbaker
sfaze@flmnh.ufl.edu
@sfaze
Thanks!

More Related Content

PDF
Web application intro
PPTX
Berkshelf Tutorial : Better Way to Create and Manage Chef Cookbooks
PDF
Be Happy With Ruby on Rails - Ecosystem
PPTX
Java spring mysql without hibernate(2) (1)
PDF
Teaming up WordPress API with Backbone.js in Titanium
DOCX
Domain and hostion
PPTX
Using ajax in mule
PPTX
Ruby on Rails - An overview
Web application intro
Berkshelf Tutorial : Better Way to Create and Manage Chef Cookbooks
Be Happy With Ruby on Rails - Ecosystem
Java spring mysql without hibernate(2) (1)
Teaming up WordPress API with Backbone.js in Titanium
Domain and hostion
Using ajax in mule
Ruby on Rails - An overview

What's hot (20)

PDF
Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)
PPTX
Building native mobile apps with word press
PDF
Serverless WordPress using AWS Services - WordCamp Atlanta 2017
PDF
WordPress and Client Side Web Applications WCTO
PPT
Deploying Rails Apps with Capistrano
PDF
Create a fake REST API without writing a single line of code
PPSX
04 asp.net session05
ODP
Introduction to Ruby on Rails
PDF
How angularjs saves rails
PDF
[GeekTalk#2] Takaaki Mizuno - Api Url Design
KEY
Ultra-modern Front-end Dev & Introducing Spar
KEY
The World of Dynamic Sites
PDF
AngularJS meets Rails
PPTX
Mule esb - How to connect to a MySql Database in 5 minutes
PPTX
Webinar: AngularJS and the WordPress REST API
PDF
Ember,js: Hipster Hamster Framework
PPT
Web Application Introduction
PPTX
Cotent Deploymet In Share Point 2007
PDF
Node.js to the rescue
Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)
Building native mobile apps with word press
Serverless WordPress using AWS Services - WordCamp Atlanta 2017
WordPress and Client Side Web Applications WCTO
Deploying Rails Apps with Capistrano
Create a fake REST API without writing a single line of code
04 asp.net session05
Introduction to Ruby on Rails
How angularjs saves rails
[GeekTalk#2] Takaaki Mizuno - Api Url Design
Ultra-modern Front-end Dev & Introducing Spar
The World of Dynamic Sites
AngularJS meets Rails
Mule esb - How to connect to a MySql Database in 5 minutes
Webinar: AngularJS and the WordPress REST API
Ember,js: Hipster Hamster Framework
Web Application Introduction
Cotent Deploymet In Share Point 2007
Node.js to the rescue
Ad

Similar to The web is made of links. Don't break them. (20)

PPTX
Intro to advanced web development
PPTX
EdTechJoker Spring 2020 - Lecture 5 grav cms
PPTX
Grav CMS
PDF
Scalable talk notes
PDF
Migration Best Practices - SEOkomm 2018
PPT
Apache Traffic Server
PDF
Research on Key Technology of Web Reptile
PDF
Create dynamic sites with PHP & MySQL
PPTX
Site Speed = Success – Optimising WordPress from the Server Up - Presented by...
PPTX
WordCamp Harare 2016 - Site Speed = Success
PDF
Demystifying web performance tooling and metrics
PDF
Web-Queue-Worker pattern over Kafka - API Days 2024 - Light-VF.pdf
DOCX
Automation in the Cloud by_Tommy post and Bradley Bishop
PPT
Make Drupal Run Fast - increase page load speed
PPTX
Ror caching
PPTX
Ppt ict.pptx 2
PPTX
DevOps Naughties Style - How We DevOps at MP3.com in the Early 2000's
PDF
Automating your infrastructure with Chef
PDF
Rock Solid Sametime for High Availability
PDF
Web Content Management Systems Features and Best Practices 1 (Early Release) ...
Intro to advanced web development
EdTechJoker Spring 2020 - Lecture 5 grav cms
Grav CMS
Scalable talk notes
Migration Best Practices - SEOkomm 2018
Apache Traffic Server
Research on Key Technology of Web Reptile
Create dynamic sites with PHP & MySQL
Site Speed = Success – Optimising WordPress from the Server Up - Presented by...
WordCamp Harare 2016 - Site Speed = Success
Demystifying web performance tooling and metrics
Web-Queue-Worker pattern over Kafka - API Days 2024 - Light-VF.pdf
Automation in the Cloud by_Tommy post and Bradley Bishop
Make Drupal Run Fast - increase page load speed
Ror caching
Ppt ict.pptx 2
DevOps Naughties Style - How We DevOps at MP3.com in the Early 2000's
Automating your infrastructure with Chef
Rock Solid Sametime for High Availability
Web Content Management Systems Features and Best Practices 1 (Early Release) ...
Ad

Recently uploaded (20)

PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Cloud computing and distributed systems.
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Encapsulation theory and applications.pdf
PDF
Modernizing your data center with Dell and AMD
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Network Security Unit 5.pdf for BCA BBA.
Mobile App Security Testing_ A Comprehensive Guide.pdf
A Presentation on Artificial Intelligence
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
“AI and Expert System Decision Support & Business Intelligence Systems”
Cloud computing and distributed systems.
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Diabetes mellitus diagnosis method based random forest with bat algorithm
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Encapsulation theory and applications.pdf
Modernizing your data center with Dell and AMD
Understanding_Digital_Forensics_Presentation.pptx
MYSQL Presentation for SQL database connectivity
Empathic Computing: Creating Shared Understanding
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Agricultural_Statistics_at_a_Glance_2022_0.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Per capita expenditure prediction using model stacking based on satellite ima...
Network Security Unit 5.pdf for BCA BBA.

The web is made of links. Don't break them.

  • 1. The web is made of links. Don’t break them. A method to gradually transition a large site to a CMS on your own timetable and keep it transparent to your visitors while doing it.
  • 2. We’ve had a website for a long time – since April 1995.
  • 3. Our first sitemap. It’s a web of links! Get it?!? Guess what – it still is.
  • 4. Upper level pages recently redesigned and using a CMS. Only 1% of total pages though.
  • 5. Some of our 90’s-era sites still get a lot of traffic.
  • 6. All of whom had varying web skills (if any) and were allowed to do anything they wanted. 115 known contributors
  • 7. Defined as pages that have a different design then the top-level visit-oriented pages. 115 known contributors 88 current sub-sites
  • 8. We’ve ended up with a LOT of content in 18 years. 115 known contributors 88 current sub-sites 27,482 total web pages
  • 9. Plus an unknowable amount of browser bookmarks & print references. 115 known contributors 88 current sub-sites 27,482 total web pages 501,170 incoming links from other sites
  • 10. Screenshots of our collection homepages in 2010. Definite branding and usability issues.
  • 11. The master plan. (BTW, the web office has a staff of 2.75 FTE)
  • 12. Um, yeah. Reality check #1 We will never have enough time or staff to update it all at once.
  • 13. Time to panic. Reality check #1 Any CMS we choose will have a different way of writing links and will break our old URLs. Reality check #2 We will never have enough time or staff to update it all at once.
  • 14. Don’t waste your time fighting this. Let your new CMS do its thing. Bad idea #1: We have to get our new CMS to follow our old URL scheme! New: www.flmnh.ufl.edu/visit/shopping/butterfly-plant-sales/ Old: www.flmnh.ufl.edu/butterflies/plants.htm
  • 15. This is not a solution. This still breaks stuff. Bad idea #2: Let’s squirrel away all of our old content to an “archive” area of the site! http://archive.yoursite.org/old-stuff.htm
  • 16. You’ll need to admin access to your servers to try this yourself. This is how we handled it.
  • 17. Just one CMS? Nah, let’s make it interesting and run two!
  • 18. A reverse proxy allows multiple servers to deliver pages using the same URL space.
  • 19. We chose to use Apache, but any reverse proxy/gateway will do.
  • 20. Setting up a proxy on Apache is pretty simple, but read the documentation for more details. Apache mod_proxy Module RewriteRule (.*) http://www.flmnh.ufl.edu ProxyPassReverse / http://iiswww.flmnh.ufl.edu More info: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html
  • 21. Tell the proxy what is on your legacy server and serve it immediately if there is a match.
  • 22. Be thorough - list every possible legacy directory path in your conf file. (We have 137.) Configuration File Rewrite Rules RewriteCond %{REQUEST_URI} ^/annualreports(.*) [OR,NC] RewriteCond %{REQUEST_URI} ^/anthro/caribarch(.*) [OR,NC] RewriteCond %{REQUEST_URI} ^/caribarch (.*) [OR,NC] RewriteCond %{REQUEST_URI} ^/bats(.*) [OR,NC] RewriteCond %{REQUEST_URI} ^/birds(.*) [NC] More info: http://httpd.apache.org/docs/current/configuring.html
  • 23. Our legacy server happens to run IIS. YLMV.
  • 24. If the page requested is not on the legacy server, send it on to your main CMS.
  • 25. The CMS will serve the page if it is housed on that system.
  • 26. If the page is not on your main CMS either, send it on for further processing.
  • 27. Redirect app built in-house with PHP/MySQL backend using CakePHP framework for GUI.
  • 28. The app can send it to other systems (if you go that route) or redirect offsite.
  • 29. Be sure to terminate with a 404 if it truly is a bogus link.
  • 30. Plug in your legacy/CMS situation and hopefully this can help you.
  • 31. My awesome coworkers. Couldn’t have pulled this off without ‘em. Credits Taylor Wilson Web Developer Warren Brown Enterprise Systems Coordinator Andy Lievertz Systems Administrator
  • 32. Contact me if you have any questions or want more techy details. Sarah Fazenbaker sfaze@flmnh.ufl.edu @sfaze Thanks!