1

I'd like to know how to accomplish the following using the Codigniter MVC framework:

I want the URLs on my site looking like this:

http://www.example.com/florida/miami/12345-selling-a-new-ipod.html
http://www.example.com/texas/houston/21345-nice-red-car-for-sale.html
http://www.example.com/north-carolina/hickory/92634-giving-away-two-kitties.html

So basically the URI is composed of state / city / article.

I want to cover all cities in the 50 states, but I wouldn't want to write a controller for each state and each city.

So my question basically is:

How can I write a single controller that will display a state index based on the first URI segment and a second controller displaying a city index based on the second URI segment?

Best regards

Tom

tereško
  • 58,060
  • 25
  • 98
  • 150
thwd
  • 23,956
  • 8
  • 74
  • 108

2 Answers2

1

You can use mod_rewrite in Apache to do the URL rewrite. In the document of CodeIgnitor http://codeigniter.com/wiki/mod_rewrite/ . Basically, you have to define the regular expression to rewrite /arg1/arg2/arg3 to url your_controller/state=arg1&city=arg2&value=arg3 Details of mod_rewrite can be found at http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

ntdt
  • 300
  • 2
  • 4
  • but that regular expression would be huge... `(florida|north\-carolina|south\-carolina|texas|...)` and so on for 50 states? – thwd Mar 25 '11 at 13:17
  • Set a controller name e.g. usa/state_name/cities/details – ntdt Mar 25 '11 at 14:51
1

you could do it by configuring a route in your config/routes.php

$route['^(:any)/(:any)'] = "some_controller/some_method/$1/$2";

which will map everything into the some_method function of your some_controller class. so if you have anything else which isn't example.com/state/city it will also get sent there.. you would have to route it out of there with another route.

icchanobot
  • 3,323
  • 27
  • 37