Ajax software
Free javascripts
↑
Main Page
contains lots of theory on regular expressions as well. The Wikipedia page on regular expressions is great
for background information (
http://en.wikipedia.org/wiki/Regular_expression
).
A regular expression (sometimes referred to as a
regex
) is a special string that describes a text
pattern
.
With regular expressions you can define rules that match groups of strings, extract data from strings, and
transform strings, which enable very flexible and complex text manipulation using concise rules. Regular
expressions aren’t specific to mod_rewrite and URL rewriting. On the contrary, they’ve been around for a
while, and they’re implemented in many tools and programming languages, including PHP.
To demonstrate their usefulness with a simple example, assume your web site needs to rewrite links as
shown in Table 3-2.
Table 3-2
If you have 100,000 products, without regular expressions you’d be in a bit of a trouble, because you’d
need to write just as many rules — no more, no less.
You don’t want to manage an
.htaccess
file with
100,000 rewrite rules!
That would be unwieldy.
However, if you look at the Original URL column of the table, you’ll see that all entries follow the same
pattern
. And as suggested earlier, regular expressions can come to rescue! Patterns are useful because
with a single pattern you can match a theoretically infinite number of possible input URLs, so you just
need to write a rewriting rule for every
type
of URL you have in your web site.
In the exercise that follows, you use a regular expression that matches
Products/P
n
.html
, and use
mod_rewrite to translate URLs that match that pattern to
product.php?productID=
n
. This will
implement exactly the rules described in Table 3-1.
Working with Regular Expressions
1.
Open the
.htaccess
file you created earlier in your
seophp
folder, and add the following
rewriting rule to it:
RewriteEngine On
# Translate my-super.product.html to /product.php?product_id=123
RewriteRule ^my-super-product\.html$ /product.php?product_id=123
Original URL
Rewritten URL
Products/P1.html product.php?product_id=1
Products/P2.html product.php?product_id=2
Products/P3.html product.php?product_id=3
Products/P4.html product.php?product_id=4
…
…
55
Chapter 3: Provocative SE-Friendly URLs
c03.qxd:c03 10:39 55
Ajax software
Free javascripts
→ R7