SlideShare a Scribd company logo
1 of 32
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

What's hot

Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)
Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)
Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)Cliff Seal
 
Building native mobile apps with word press
Building native mobile apps with word pressBuilding native mobile apps with word press
Building native mobile apps with word pressNikhil Vishnu P.V
 
Serverless WordPress using AWS Services - WordCamp Atlanta 2017
Serverless WordPress using AWS Services - WordCamp Atlanta 2017Serverless WordPress using AWS Services - WordCamp Atlanta 2017
Serverless WordPress using AWS Services - WordCamp Atlanta 2017Carel Bekker
 
WordPress and Client Side Web Applications WCTO
WordPress and Client Side Web Applications WCTOWordPress and Client Side Web Applications WCTO
WordPress and Client Side Web Applications WCTORoy Sivan
 
Deploying Rails Apps with Capistrano
Deploying Rails Apps with CapistranoDeploying Rails Apps with Capistrano
Deploying Rails Apps with CapistranoNyros Technologies
 
Create a fake REST API without writing a single line of code
Create a fake REST API without writing a single line of codeCreate a fake REST API without writing a single line of code
Create a fake REST API without writing a single line of codeYashobanta Bai
 
04 asp.net session05
04 asp.net session0504 asp.net session05
04 asp.net session05Vivek chan
 
Introduction to Ruby on Rails
Introduction to Ruby on RailsIntroduction to Ruby on Rails
Introduction to Ruby on Railshasan2000
 
How angularjs saves rails
How angularjs saves railsHow angularjs saves rails
How angularjs saves railsMichael He
 
[GeekTalk#2] Takaaki Mizuno - Api Url Design
[GeekTalk#2] Takaaki Mizuno - Api Url Design[GeekTalk#2] Takaaki Mizuno - Api Url Design
[GeekTalk#2] Takaaki Mizuno - Api Url DesignNexus FrontierTech
 
Ultra-modern Front-end Dev & Introducing Spar
Ultra-modern Front-end Dev & Introducing SparUltra-modern Front-end Dev & Introducing Spar
Ultra-modern Front-end Dev & Introducing SparAaron White
 
AngularJS meets Rails
AngularJS meets RailsAngularJS meets Rails
AngularJS meets RailsElena Torró
 
Mule esb - How to connect to a MySql Database in 5 minutes
Mule esb - How to connect to a MySql Database in 5 minutesMule esb - How to connect to a MySql Database in 5 minutes
Mule esb - How to connect to a MySql Database in 5 minutesGennaro Spagnoli
 
Webinar: AngularJS and the WordPress REST API
Webinar: AngularJS and the WordPress REST APIWebinar: AngularJS and the WordPress REST API
Webinar: AngularJS and the WordPress REST APIWP Engine UK
 
Ember,js: Hipster Hamster Framework
Ember,js: Hipster Hamster FrameworkEmber,js: Hipster Hamster Framework
Ember,js: Hipster Hamster FrameworkBilly Shih
 
Web Application Introduction
Web Application  IntroductionWeb Application  Introduction
Web Application Introductionshaojung
 
Cotent Deploymet In Share Point 2007
Cotent Deploymet In Share Point 2007Cotent Deploymet In Share Point 2007
Cotent Deploymet In Share Point 2007SharePoint Experts
 
Node.js to the rescue
Node.js to the rescueNode.js to the rescue
Node.js to the rescueMarko Heijnen
 

What's hot (20)

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

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

Intro to advanced web development
Intro to advanced web developmentIntro to advanced web development
Intro to advanced web developmentStevie T
 
EdTechJoker Spring 2020 - Lecture 5 grav cms
EdTechJoker Spring 2020 - Lecture 5 grav cmsEdTechJoker Spring 2020 - Lecture 5 grav cms
EdTechJoker Spring 2020 - Lecture 5 grav cmsBryan Ollendyke
 
Grav CMS
Grav CMSGrav CMS
Grav CMSbtopro
 
Migration Best Practices - SEOkomm 2018
Migration Best Practices - SEOkomm 2018Migration Best Practices - SEOkomm 2018
Migration Best Practices - SEOkomm 2018Bastian Grimm
 
Apache Traffic Server
Apache Traffic ServerApache Traffic Server
Apache Traffic Serversupertom
 
Research on Key Technology of Web Reptile
Research on Key Technology of Web ReptileResearch on Key Technology of Web Reptile
Research on Key Technology of Web ReptileIRJESJOURNAL
 
Create dynamic sites with PHP & MySQL
Create dynamic sites with PHP & MySQLCreate dynamic sites with PHP & MySQL
Create dynamic sites with PHP & MySQLkangaro10a
 
Site Speed = Success – Optimising WordPress from the Server Up - Presented by...
Site Speed = Success – Optimising WordPress from the Server Up - Presented by...Site Speed = Success – Optimising WordPress from the Server Up - Presented by...
Site Speed = Success – Optimising WordPress from the Server Up - Presented by...WordCamp Harare
 
WordCamp Harare 2016 - Site Speed = Success
WordCamp Harare 2016 - Site Speed = SuccessWordCamp Harare 2016 - Site Speed = Success
WordCamp Harare 2016 - Site Speed = SuccessAnthony Somerset
 
Demystifying web performance tooling and metrics
Demystifying web performance tooling and metricsDemystifying web performance tooling and metrics
Demystifying web performance tooling and metricsAnna Migas
 
Automation in the Cloud by_Tommy post and Bradley Bishop
Automation in the Cloud by_Tommy post and Bradley BishopAutomation in the Cloud by_Tommy post and Bradley Bishop
Automation in the Cloud by_Tommy post and Bradley BishopTommy Post
 
Make Drupal Run Fast - increase page load speed
Make Drupal Run Fast - increase page load speedMake Drupal Run Fast - increase page load speed
Make Drupal Run Fast - increase page load speedAndy Kucharski
 
DevOps Naughties Style - How We DevOps at MP3.com in the Early 2000's
DevOps Naughties Style - How We  DevOps at MP3.com in the Early 2000'sDevOps Naughties Style - How We  DevOps at MP3.com in the Early 2000's
DevOps Naughties Style - How We DevOps at MP3.com in the Early 2000'stechopsguru
 
Automating your infrastructure with Chef
Automating your infrastructure with ChefAutomating your infrastructure with Chef
Automating your infrastructure with ChefJohn Ewart
 
Rock Solid Sametime for High Availability
Rock Solid Sametime for High AvailabilityRock Solid Sametime for High Availability
Rock Solid Sametime for High AvailabilityGabriella Davis
 
Up and Running with WordPress - Site Shack Nashville Web Design
Up and Running with WordPress - Site Shack Nashville Web DesignUp and Running with WordPress - Site Shack Nashville Web Design
Up and Running with WordPress - Site Shack Nashville Web DesignJudy Wilson
 

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

Intro to advanced web development
Intro to advanced web developmentIntro to advanced web development
Intro to advanced web development
 
EdTechJoker Spring 2020 - Lecture 5 grav cms
EdTechJoker Spring 2020 - Lecture 5 grav cmsEdTechJoker Spring 2020 - Lecture 5 grav cms
EdTechJoker Spring 2020 - Lecture 5 grav cms
 
Grav CMS
Grav CMSGrav CMS
Grav CMS
 
Scalable talk notes
Scalable talk notesScalable talk notes
Scalable talk notes
 
Migration Best Practices - SEOkomm 2018
Migration Best Practices - SEOkomm 2018Migration Best Practices - SEOkomm 2018
Migration Best Practices - SEOkomm 2018
 
Apache Traffic Server
Apache Traffic ServerApache Traffic Server
Apache Traffic Server
 
Research on Key Technology of Web Reptile
Research on Key Technology of Web ReptileResearch on Key Technology of Web Reptile
Research on Key Technology of Web Reptile
 
Create dynamic sites with PHP & MySQL
Create dynamic sites with PHP & MySQLCreate dynamic sites with PHP & MySQL
Create dynamic sites with PHP & MySQL
 
Site Speed = Success – Optimising WordPress from the Server Up - Presented by...
Site Speed = Success – Optimising WordPress from the Server Up - Presented by...Site Speed = Success – Optimising WordPress from the Server Up - Presented by...
Site Speed = Success – Optimising WordPress from the Server Up - Presented by...
 
WordCamp Harare 2016 - Site Speed = Success
WordCamp Harare 2016 - Site Speed = SuccessWordCamp Harare 2016 - Site Speed = Success
WordCamp Harare 2016 - Site Speed = Success
 
Demystifying web performance tooling and metrics
Demystifying web performance tooling and metricsDemystifying web performance tooling and metrics
Demystifying web performance tooling and metrics
 
Automation in the Cloud by_Tommy post and Bradley Bishop
Automation in the Cloud by_Tommy post and Bradley BishopAutomation in the Cloud by_Tommy post and Bradley Bishop
Automation in the Cloud by_Tommy post and Bradley Bishop
 
Make Drupal Run Fast - increase page load speed
Make Drupal Run Fast - increase page load speedMake Drupal Run Fast - increase page load speed
Make Drupal Run Fast - increase page load speed
 
Ror caching
Ror cachingRor caching
Ror caching
 
Ppt ict.pptx 2
Ppt ict.pptx 2Ppt ict.pptx 2
Ppt ict.pptx 2
 
DevOps Naughties Style - How We DevOps at MP3.com in the Early 2000's
DevOps Naughties Style - How We  DevOps at MP3.com in the Early 2000'sDevOps Naughties Style - How We  DevOps at MP3.com in the Early 2000's
DevOps Naughties Style - How We DevOps at MP3.com in the Early 2000's
 
Automating your infrastructure with Chef
Automating your infrastructure with ChefAutomating your infrastructure with Chef
Automating your infrastructure with Chef
 
Rock Solid Sametime for High Availability
Rock Solid Sametime for High AvailabilityRock Solid Sametime for High Availability
Rock Solid Sametime for High Availability
 
Up and Running with WordPress - Site Shack Nashville Web Design
Up and Running with WordPress - Site Shack Nashville Web DesignUp and Running with WordPress - Site Shack Nashville Web Design
Up and Running with WordPress - Site Shack Nashville Web Design
 
Headless CMS VS Traditional CMS.pdf
Headless CMS VS Traditional CMS.pdfHeadless CMS VS Traditional CMS.pdf
Headless CMS VS Traditional CMS.pdf
 

Recently uploaded

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 

Recently uploaded (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 

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!