1

I list about 9,000 records on my little site. At the moment I'm showing them with a dynamic page, like

http://domain.com/records.php?id=019031

But I'd like to start using meaningful URLs like this one on Amazon

http://www.amazon.co.uk/Library-Mythology-Oxford-Worlds-Classics/dp/0199536325

where the title string on the root level gets ignored and requests are redirected to the records.php page, which accepts the ID as usual.

Does anybody know how I could achieve that with mod_rewrite? I'm wondering how I'd deal with requests to my other root-level pages, like http://domain.com/contact.php, that I don't want to redirect to the records page.

1
  • mod_rewrite supports regular expressions, so you'll probably end up using a regular expression that matches /[title-string]/[id] (such as ^/[\w-]*/(\d+)$), and redirect that ignoring the title string. Unfortunately I don't have enough mod_rewrite experience to tell you the syntax off the top of my head!
    – jtbandes
    Jun 25, 2011 at 7:36

1 Answer 1

1

Try this in your root's .htaccess:

RewriteEngine on
RewriteRule ^[^/]+/(\d+)$ records.php?id=$1 [QSA]

http://example.com/foo-bar/42 will be rewritten to http://example.com/records.php?id=42

It wont affect URLs like contact.php, since it does not match ^[^/]+/(\d+)$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.