For 2021 - online Python 3 training - see ((here)).
Our plans were to retire in summer 2020 and see the world, but Coronavirus has lead us into a lot of lockdown programming in Python 3 and PHP 7.
We can now offer tailored online training - small groups, real tutors - works really well for groups of 4 to 14 delegates. Anywhere in the world; course language English.
Please ask about private 'maintenance' training for Python 2, Tcl, Perl, PHP, Lua, etc.
Using different URLs to navigate around a single script
1. I want my website to have different
URLs for each of my content pages so that users can easily bookmark pages, pass them on to friends and contacts easily and with confidence, and search engines can register and handle each as its own distinct page
2. I want most of the pages on my website to be provided by the same
script, so that I can maintain a single piece of code that brings in variable content as required.
Requirements (1) and (2) may appear to conflict at first, but in reality they don't. Multiple URLs can be mapped onto a single script using Apache httpd's mod_rewrite (guide
). And that way, you can get the best of both worlds.
Mod_rewrite is very powerful; we use it in many places on our web site and on client web sites, and the casual website visitor hasn't a clue that it's in use. Because it's very powerful and flexible, though, the documentation can be a bit longwinded to wade through and it's often hard to see the wood for the trees. So here's an example:
In the .htaccess file in a directory called /boutique
RewriteRule ^([^/]*)/([^.]*)\.html$ demo.php?andy=$1&graham=$2
RewriteRule ^([^/]*)\.html$ demo.php?toplevel=$1
Any top level .html requests are mapped to the script with a "toplevel" parameter as if one box on a form had been completed (that's the second rule). And .html requests that appear to be in subdirectories are mapped to the same script with parameters called "andy" and "graham" as if each of those elements had been entered into a form.
I've put up a live script on our save the train site under a subdirectory called boutique. Try out the following URLs:
The script source code is available here, the .htaccess file source is here, and training is available here
(written 2006-06-11, updated 2006-06-13)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesA607 - Web Application Deployment - Apache httpd mod_rewrite
 Apache httpd to Tomcat - jk v proxy - (2006-03-03)
 Clustering, load balancing, mod_rewrite and mod_proxy - (2006-11-21)
 Apache httpd and Apache Tomcat together tips - (2006-12-24)
 Passing GET parameters through Apache mod_rewrite - (2006-12-27)
 Simple but effective use of mod_rewrite (Apache httpd) - (2007-05-27)
 Choosing between mod_proxy and mod_rewrite - (2007-10-02)
 Using a MySQL database to control mod_rewrite via PHP - (2007-10-06)
 What to do if the Home Page is missing - (2008-05-08)
 Apache httpd, MySQL, PHP - installation procedure - (2008-08-01)
 More HowTo diagrams - MySQL, Tomcat and Java - (2008-08-24)
 Pointing all the web pages in a directory at a database - (2008-08-30)
 mod_rewrite for newcomers - (2008-12-20)
 If you have a spelling mistake in your URL / page name - (2009-03-21)
 Bookkeeping - (2009-12-29)
 Redirecting a home page using mod_rewrite - (2010-04-17)
 Carrying a long URL around - looking for memorable shorts - (2010-05-17)
 Dynamically watching your web site via a PHP wrapper - (2010-05-21)
 Redirecting a page - silent, temporary or permanent? - (2010-08-03)
 How to set up short and meaningfull alternative URLs - (2010-10-02)
 Finding and diverting image requests from rogue domains - (2011-03-08)
 Simplest ever proxy configuration? - (2011-06-28)
 Telling which ServerAlias your visitor used - useful during merging domains - (2012-01-04)
 Adding a passcode to a directory - (2012-06-05)
 Forwarding a whole domain, except for a few directories - Apache http server - (2012-09-17)
A603 - Web Application Deployment - Further httpd Configuration
 Spotting a denial of service attack - (2005-06-12)
 Separating 'per instance' data from binaries and web sites - (2005-10-16)
 Apache httpd - serving web documents from different directories - (2005-12-12)
 2006 - Making business a pleasure - (2006-01-01)
 Denial of Service ''attack'' - (2006-03-17)
 An unhelpful error message from Apache httpd - (2006-03-30)
 To list a directory under httpd on a web server, or not? - (2006-09-02)
 httpd.conf or .htaccess? - (2007-02-14)
 Sharing the load with Apache httpd and perhaps Tomcat - (2007-03-29)
 Compressing web pages sent out from server. Is it worth it? - (2007-09-14)
 .php or .html extension? Morally Static Pages - (2007-09-17)
 Load Balancing with Apache mod_jk (httpd/Tomcat) - (2007-10-02)
 Which modules are loaded in my Apache httpd - (2008-02-23)
 Online hotel reservations - Melksham, Wiltshire (near Bath) - (2008-02-24)
 Default file (MiMe types) for Apache httpd and Apache Tomcat - (2008-03-04)
 Strange behaviour of web directory requests without a trailing slash - (2008-03-06)
 User and Group settings for Apache httpd web server - (2008-04-22)
 Configuring Apache httpd - (2008-07-12)
 WEB-INF (Tomcat) and .htaccess (httpd) - (2008-08-20)
 mod_proxy and mod_proxy_ajp - httpd - (2008-08-22)
 mod_proxy_ajp and mod_proxy_balancer examples - (2008-12-13)
 How to avoid duplicating web page maintainance - (2008-12-20)
 Moving a directory on your web site - (2009-01-03)
 Database connection Pooling, SSL, and command line deployment - httpd and Tomcat - (2009-03-01)
 Monitoring and loading tools for testing Apache Tomcat - (2009-07-07)
 How did I do THAT? - (2009-10-26)
 An image from a website that occasionally comes out as hyroglyphics - (2011-01-14)
 Apache Internal Dummy Connection - what is it and what should I do with it? - (2011-09-19)
 Parse error: parse error, unexpected T_STRING on brand new web site - why? - (2012-03-03)
 Building up from a small PHP setup to an enterprise one - (2012-12-16)
 Helping search engines with appropriate 400 error codes - (2013-02-11)
 Identifying and clearing denial of service attacks on your Apache server - (2014-09-27)
Some other Articles
Watch your Google profile
Very good for woodlice
Horse and Python training
Seeing the bricks for the trees
Using different URLs to navigate around a single script
tar, jar, war, ear, sar files
Python 3000 - the next generation
Over zealous police activity?
Want to be a technical trainer in the UK?
Almost everyone loses
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page
This is a page archived from The Horse's Mouth at
the diary and writings of Graham Ellis.
Every attempt was made to provide current information at the time the
page was written, but things do move forward in our business - new software
releases, price changes, new techniques. Please check back via
our main site for current courses,
prices, versions, etc - any mention of a price in "The Horse's Mouth"
cannot be taken as an offer to supply at that price.
Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).