Backwards Compatibility - accu-org/website-v3 GitHub Wiki

With a new website, it is difficult to keep existing external links working that are based on the previous website. Also, it may not be easy to properly load all HTML journal articles into the new website. Here we take a look at what we can do.

Contents

Existing links into the website

There may be several reasons why it is difficult to keep existing external links working, such as:

  • The new website may not have the content (HTML articles).
  • The links use non-descriptive names (Book reviews, HTML articles, sections).
  • In general, the organisation of the new site differs from the old one.

There are several places that link to the current ACCU website

Frequently linked-to content can be determined from e.g. Google Analytics reports and from the Google Webmaster Central Links to your site report.

Initially we can redirect all links to the journal HTML articles to the old website. Then, insofar it is reasonably possible to keep external links working:

  • Determine which content is most linked to.
  • Add frequently linked-to content to the new website.
  • Provide aliases for backward compatibility for most-linked content.
  • Personally and generally inform people that material may not be present anymore (in that form, such as html articles) and that links have changed (accu-general), so that they can correct or remove links.

For some HTML articles an alias may be created into the corresponding journal PDF, such as:

journals/1606 => .../Overload95.pdf#page=5

Note that not all journals are available as PDF, notably:

  • C Vu 02.1–14.3.
  • Overload 1–4, 17/18, 28–46.

Initial redirect of all journal articles

It will probably not be easy to properly load all HTML journal articles into the new website. To start using the new website without doing so, we can redirect access to HTML journal articles to the old website and thus keep existing external links to them working.

To redirect these requests, we can use the Apache websserver's rewriting module and add a rule such as the following to the new website's .htaccess file:

RewriteRule ^index.php/journals/(.*) http://old.accu.org/index.php/journals/$1 [R,L]

Journal articles can then be added to the new website and under a different URL in a gradual manner. See also Redirect HTML journal articles on the Prototype page.

The same article is now available under two different URLs, e.g. http://accu.org/ and http://old.accu.org/. This has several effects on search machine results:

Instructing search engines to no longer index the old website will eventually lead to a loss of links. See also Duplicate Content and Google Webmaster Tools, 301 redirects.

Old articles on the new website

It may be a good idea to at least add the top-X viewed HTML articles and the articles linked from StackOverflow as HTML articles to the new website.

Examples of frequently viewed articles over the last year:

  • journals/442 - Thaddaeus Frogley . An introduction to C++ Traits. June 2001.
  • journals/233 - Mark Radford. C++ Interface Classes - An Introduction. August 2004.
  • journals/551 - Richard Blundell. UML Relationships and Associations, Aggregation and Composition. February 1999.
  • journals/1524 - Paul Grenyer. Model View Controller with Java Swing. December 2008.
  • journals/1326 - Chris Main. C++ Unit Test Frameworks. April 2007.
  • journals/389 - Pete Goodliffe. STL-style Circular Buffers By Example. August 2002.
  • journals/236 - Tony Barrett-Powell. Handling Exceptions in finally. August 2004.
  • journals/227 - Mikael Kilpeläinen. Lvalues and Rvalues. June 2004.
  • journals/1527 - Roel Vanhout. Iterators and Memberspaces. December 2008.
  • journals/409 - Andrei Iltchenko. The C++ Template Argument Deduction. April 2002.

These articles (should) appear under a different URL than the original articles and old-URL aliases to them should be be created. These aliases can be made within Drupal, note however that when the wildcard redirect is used, redirects into the new website for these articles should be made before the wildcard redirect in the .htaccess file. For example:

RewriteRule ^index.php/journals/123 /node/30 [L,R=301]