Scenario - I wanted to provide an easy download link that can be used to circulate a number of documents to people on a maiing list, with them able to pick and choose which they read. Don't want them to have to login / give passwords, but do want to be able to make it something more than just a simple URL. Don't want to have to write much code either.
Simple solution - require them to add a piece of text as the query string for each item downloaded; if sending out links in am email, that extra text can go into the link. Use mod_rewrite to check for the query string that's required. If it's there, feed the required document, otherwise feed an error page.
Here's my .htaccess file (with the passcode - extra string - altered from the real thing, of course!):
RewriteEngine Off
RewriteEngine On
RewriteCond %{QUERY_STRING} (10_per_day)
RewriteRule ^(.*)$ $1 [L]
RewriteRule ^(.*)$ i.txt
The i.txt file is my error text file; the passcode can be easily changed and since it's a regular expression I can do all sorts of things with it like add alternatives. It would also be a good idea to add this directory to my robots.txt just in case someone publishes a link and passcode on their own page.
P.S. The rather curious off and on for the engine at the start is to prevent the parent directory's mod_rewrite settings percollating down to this directory.
(written 2012-06-05, updated 2012-06-09)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
A607 - Web Application Deployment - Apache httpd mod_rewrite [3862] Forwarding a whole domain, except for a few directories - Apache http server - (2012-09-17)
[3568] Telling which ServerAlias your visitor used - useful during merging domains - (2012-01-04)
[3339] Simplest ever proxy configuration? - (2011-06-28)
[3197] Finding and diverting image requests from rogue domains - (2011-03-08)
[2981] How to set up short and meaningfull alternative URLs - (2010-10-02)
[2900] Redirecting a page - silent, temporary or permanent? - (2010-08-03)
[2773] Dynamically watching your web site via a PHP wrapper - (2010-05-21)
[2768] Carrying a long URL around - looking for memorable shorts - (2010-05-17)
[2728] Redirecting a home page using mod_rewrite - (2010-04-17)
[2555] Bookkeeping - (2009-12-29)
[2094] If you have a spelling mistake in your URL / page name - (2009-03-21)
[1954] mod_rewrite for newcomers - (2008-12-20)
[1778] Pointing all the web pages in a directory at a database - (2008-08-30)
[1771] More HowTo diagrams - MySQL, Tomcat and Java - (2008-08-24)
[1731] Apache httpd, MySQL, PHP - installation procedure - (2008-08-01)
[1636] What to do if the Home Page is missing - (2008-05-08)
[1381] Using a MySQL database to control mod_rewrite via PHP - (2007-10-06)
[1376] Choosing between mod_proxy and mod_rewrite - (2007-10-02)
[1207] Simple but effective use of mod_rewrite (Apache httpd) - (2007-05-27)
[1009] Passing GET parameters through Apache mod_rewrite - (2006-12-27)
[1006] Apache httpd and Apache Tomcat together tips - (2006-12-24)
[934] Clustering, load balancing, mod_rewrite and mod_proxy - (2006-11-21)
[755] Using different URLs to navigate around a single script - (2006-06-11)
[631] Apache httpd to Tomcat - jk v proxy - (2006-03-03)
Some other Articles
Ruby - a teaching example showing many of the language features in short but useful programRuby on Rails - how it flows, and where the files goCruising on the Mersey Ferry?Eyes Wide OpenAdding a passcode to a directoryMelksham Visitors Map - Bus routes and train lines to and from the townPublic transport for international arrivals into MelkshamMatching opening hours to when customers can come in and buyRemoval of water safety equipment, and how to use a lifesaver ringNot everyone has a computer - 9 more ways to learn about the Melksham Campus