The following code is what I used in the construction of
Gotocity.com. My goal was, as I mentioned, to eliminate all
‘?’ and ‘&’ characters from the URL. I wanted to drill down
from the general (country, in this case the US) to the specific
(a given topic page in a given city in the country specified).
Gotocity.com. My goal was, as I mentioned, to eliminate all
‘?’ and ‘&’ characters from the URL. I wanted to drill down
from the general (country, in this case the US) to the specific
(a given topic page in a given city in the country specified).
Fortunately, all cities in the US are given a unique identifier, a
ZIP code, and each city also resides in a state. So you can drill
from Country -> state -> city -> topic page in a logical fashion.
ZIP code, and each city also resides in a state. So you can drill
from Country -> state -> city -> topic page in a logical fashion.
The important thing to note is that, if you’re viewing a “country” page,
then the ‘state’ won’t be present in the URL. If you’re viewing a ‘state’
page, both ‘country’ and ‘state’ are in the url, so you can use both
as criteria when you select from the database.
then the ‘state’ won’t be present in the URL. If you’re viewing a ‘state’
page, both ‘country’ and ‘state’ are in the url, so you can use both
as criteria when you select from the database.
The URL string is set up in a global variable called $REQUEST_URI. All
you have to do is examine the string and figure out where you’re at. I do
that by explode()’ing the string using the / separator.
you have to do is examine the string and figure out where you’re at. I do
that by explode()’ing the string using the / separator.
<?php
/*
Sample URLs:
/local/2/us/IA/a/50613/apartment/ - apartments in Cedar Falls, IA
/local/2/us/IA/a/ - group of cities in Iowa
/local/2/us/ - States in the US
/local/1/us/IA/a/50301/ - Des Moines City.net
*/
$url_array=explode("/",$REQUEST_URI); //BREAK UP THE URL PATH
// USING '/' as delimiter
$url_affil_num=$url_array[2]; //Co-Branding info
$url_country=$url_array[3]; //Which Country?
$url_state=$url_array[4]; //Which State?
$url_alpha_state=$url_array[5]; //Cities starting with a-g
$url_zip=$url_array[6]; //If present, build thispage
$url_content=$url_array[7]; //If present, build a sub-
// page for this city
/*
separate includes were designed to fetch the affiliate cobranding
and build appropriate style sheets on the fly. Data validation is
done prior to each query. If a URL is incorrect, bow out gracefully
or redirect home
*/
if($url_zip) {
/*
If present, query the Zip code database and build the page.
Inside the city.inc, we will check for which "content page"
we are building, if any.
*/
} elseif ($url_state) {
/*
If URL PATH ends here, query Zip code database,
selecting DISTINCT cities in this state
*/
} elseif ($url_country) {
/*
If URL PATH ends here, query ZIP code database,
selecting DISTINCT states for this country
*/
} else {
/*
must be mal-formed. Redirect to home
*/
Header( "Location: http://db.gotocity.com/local/2/us/");
exit;
}
?>
There, now you have all the building blocks you need to create
useful, dynamic, AND search-engine friendly web pages by the millions.
useful, dynamic, AND search-engine friendly web pages by the millions.
–Tim