NYCPHP Meetup

[nycphp-talk] Many pages: one script

Kenneth Downs ken at secdat.com
Mon Aug 6 20:27:48 EDT 2007


Elliotte Harold wrote:
> Kenneth Downs wrote:
>
>> Again, I'm not clear on what you are trying to serve.  We probably 
>> have to back up to the beginning and erase the assumption that PHP 
>> has a one-to-one correspondence between a URL (or page) and a PHP 
>> file.  Having erased that, we have to ask what kind of content you 
>> are trying to serve, then we have to look at PHP examples.
>>
>
> Here's a simple example: a news site backed by a database. URLs like
>
> http://www.example.com/news/2007/07/05
> http://www.example.com/news/2007/07/06
> http://www.example.com/news/2007/07/07
> http://www.example.com/news/2007/07/08
> ...
>
> return pages which contain that day's headlines extracted from the 
> database.
>
> One script, no more, must handle all dates. (I don't really care if 
> there are 2 or 3 scripts, but I do not want to have to write a 
> separate page for each URL. The number of PHP scripts must be finite 
> and fixed. It should not increase with the number of URLs the script 
> services.)
>
> The only way I've ever seen this done in PHP is by using mod_rewrite, 
> though they're a couple of other interesting suggestions in the thread 
> I need to explore further. Do you have a suggestion?
>

The way I actually did it in Andromeda was to use an .htaccess (though 
you could put in Apache's config of course) with these lines given to me 
by somebody on this list:

<FilesMatch "^news$">
 ForceType application/x-httpd-php
</FilesMatch>


Now a file named "news" (a php file w/o the extension) is your universal 
dispatcher.  The "news" file splits the query string on slash and 
determines which row to pull from the database.

The "news" file can also make sure subscribers are paid up, stuff like 
that.  In fact, it can load your entire framework and do anything you want.

-- 
Kenneth Downs
Secure Data Software, Inc.
www.secdat.com    www.andromeda-project.org
631-689-7200   Fax: 631-689-0527
cell: 631-379-0010




More information about the talk mailing list