Take the 2-minute tour ×
Webmasters Stack Exchange is a question and answer site for pro webmasters. It's 100% free, no registration required.

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.

share|improve this question
    
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 '11 at 7:36
add comment

migrated from stackoverflow.com Jun 25 '11 at 10:30

This question came from our site for professional and enthusiast programmers.

1 Answer

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+)$

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.