PHP is the first 'serious' language I've learned. I fiddled around with it quite a lot, and came up with this 'perfect' setup. What I mean by this is that this will give you full flexibility, easy adding of modules and native "nice URLs".
First of all, I'm using Apache as my webserver. If you're using something else, the
.htaccess
part might not work for you. Now, this RewriteRule is
gold:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
What this does is redirect everything that can't be found on the hard drive to one main script (
index.php
). In this main script, we will parse some
$_SERVER
variables and determine what to load. The main script will be quite small, but it can be extended to do a lot of things. Most of the functionality will be the modules' responsibility. Here's the (basic) script:
<?php
# Dispatch requests to files in mod/
# Do initializing things here
# like connect to your database, start a session etc.
# Get the parts from the requested path
$_ARG = explode('/', $_SERVER['PATH_INFO']);
# If the root of the site was accessed (i.e. http://example.com/),
# set the default module to 'index'
if (!$_ARG[0]) $_ARG[0] = 'index';
# Our modules will reside in the mod/ directory. If there's no file
# for the current request, set the module name to 'not-found'.
# (this will obviously crap out if there's not not-found.php in mod/)
if (!file_exists('mod/' . $_ARG[0] . '.php')) $_ARG[0] = 'not-found';
# Include the file. It will have access to the $_ARG variable
# to make its life easier.
require_once 'mod/' . $_ARG[0] . '.php';
?>
As you can see, it loads the modules from the
mod/
directory. Basically,
http://example.com/article/1234/
will load
article.php
from the
mod/
directory, which will use
$_ARG[1]
to determine what article to display. Isn't that
extremely simple and useful? Let me know :-).
No comments:
Post a Comment