私は CodeIgniter に Phil Sturgeon の REST サーバーを使用しており、次のような URL をサポートできるように機能を変更したいと考えています。
http://api.example.com/users
http://api.example.com/users/1
次のようにサポートされているユーザーの代わりに、ユーザーのリストと単一のユーザーをそれぞれ取得するには:
http://api.example.com/users
http://api.example.com/users?id=1
彼のブログで、これは mod_rewrite を使用して可能であるはずだと読みましたが、これを期待どおりに機能させることができませんでした。
デフォルトの CodeIgniter .htaccess は次のようになります。
RewriteEngine on
RewriteCond $1 !^(index\.php|css|images|js|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
そして、この機能を実現するために独自のルールを追加しようとしました。これは、正しく動作することを期待していたものです。これは、RewriteEngine のアクティブ化の後、CodeIgniter ルールの前に配置されます。
RewriteRule ^users/([0-9+]) /users?id=$1 [NC]
これは、CodeIgniter を介してルーティングされる次のルールにカスケードし、正しいusers.php
コントローラーにヒットし、次にindex_get
メソッド (REST サーバーによって再マップされる) にヒットすると考えました。
代わりに、「不明なメソッド」エラーが発生します。たとえば、CodeIgniter がユーザー整数を関数として使用しようとしているように見えusers/12
ます。12()
users.php
ここで何がうまくいかないのか、またはこの問題の解決策を推奨できる人はいますか?