web-dev-qa-db-ja.com

トリッキーなmod_rewriteチャレンジ

私の小さなサイトには約9,000件のレコードがリストされています。現時点では、次のような動的なページでそれらを表示しています

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

しかし、Amazonでこのような意味のあるURLを使い始めたい

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

ルートレベルのタイトル文字列は無視され、リクエストはrecords.phpページにリダイレクトされます。このページは通常どおりIDを受け入れます。

Mod_rewriteでそれを達成する方法を知っている人はいますか?レコードページにリダイレクトしたくないhttp://domain.com/contact.phpなどの他のルートレベルページへのリクエストをどのように処理するのか疑問に思っています。

1
And Finally

ルートの.htaccessでこれを試してください:

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

http://example.com/foo-bar/42http://example.com/records.php?id=42に書き換えられます

^[^/]+/(\d+)$と一致しないため、contact.phpなどのURLには影響しません。

1
Floern