NYCPHP Meetup

NYPHP.org

[nycphp-talk] Many pages: one script

inforequest 1j0lkq002 at sneakemail.com
Mon Aug 6 19:28:54 EDT 2007


Elliotte Harold elharo-at-metalab.unc.edu |nyphp dev/internal group use| 
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?
>
Typical MVC front controller. A "news" script like /news/index.php gets 
passed 2007 07 and 05 as params via the front controller, so one script 
handles all news/year/month/day URLs. Most frameworks provide an MVC 
front controller.

For me (a search engine optimizer) the core questions come later... how 
does that MVC front controller handle "exceptions" like:

/news/2007 (missing params) -> should 301 to default URL like 
/news/2007/01/01/ or throw a 404
/news/dfsrdf/07/06 (invalid year) -> 404 error
/news/ -> either 301 to default URL like /news/2007/01/01/ or throw a 404
/news -> 301 redirect to /news/ ? Too much redirection... either 301 to 
default URL like /news/2007/01/01/ or throw a 404
/news/2007/07/07 (no trailing slash) -> 301 to trailing slash version 
/news/2007/07/07/
/news/2007/06/07/whatever (excess params) -> 404

Admittedly, not many PHP coders care about such things. Some actually 
think flexible dispatching is a feature! Imagine that! ;-)

-=john andrews

-- 
-------------------------------------------------------------
Your web server traffic log file is the most important source of web business information available. Do you know where your logs are right now? Do you know who else has access to your log files? When they were last archived? Where those archives are? --John Andrews Competitive Webmaster and SEO Blogging at http://www.johnon.com




More information about the talk mailing list