2016-11-17 42 views
1

を.PHP削除した後、私はPHPで少しREST APIを作ってるんだが、私はこの書き換えAPIのURL

のようにURLをリライトしようとしているの.htaccess

でURLを書き換えしようとしています

私の.htaccessで
localhost/api/object/1/attributes/1 

から

localhost/api/object_attributes/1/1 

私はすでに.phpを削除するために条件を作ったが、もう一つは機能していません。

<IfModule mod_rewrite.c> 
    Options +FollowSymLinks 
    RewriteEngine On 

    RewriteRule ^api/ api.php 
    RewriteRule ^api/object/1/attributes/1 /object_attributes/1/1 
</IfModule> 

私はウェブ上で検索しましたが、解決策は見つかりませんでしたが、エラー/リダイレクトは発生しません。

+0

2番目の書き換えルールではどのような意味がありますか?あなたのhttpサーバでそのパスの下に見つかるべきオブジェクトはありません。 – arkascha

+0

これは/ object_attributes/1/1のAPI URLをこれより簡単で読みやすくすることです。 –

+0

確かに、私たちはその部分を理解しています。しかし、それはあなたのhttpサーバのファイルシステムツリーにそのようなオブジェクトが存在することを意味しません。それでもあなたが作成したPHPスクリプトに書き直す必要があります。 – arkascha

答えて

0

あなたが取り組んでいる2番目の書き換えルールは、実際には私の目には意味がありません。あなたのhttpサーバでそのパスの下に見つかるべきオブジェクトはありません。

次の2つのアプローチのいずれかをお探しの場合は、どちらがあなたの説明から明らかになっていないか、「私は...から書き直したい」という言葉はあいまいです。

RewriteEngine On 
RewriteRule ^/?api/object/(\d+)/attributes/(\d+) /api.php?object=$1&attributes=$2 [END,QSA] 

RewriteEngine On 
RewriteRule ^/?api/object_attributes/(\d+)/(\d+) /api.php?object=$1&attributes=$2 [END,QSA] 

一般的なヒント:あなたは、常に代わり.htaccessスタイルファイルを使用しての実際のhttpサーバホストコンフィギュレーション内のこのようなルールを置くことを好む必要があります。これらのファイルは、エラーが発生しやすく、デバッグが難しく、実際にはサーバーの速度を落とします。彼らはでなく、がホスト構成(本当に安価なホスティングプロバイダを参照してください)または原始的な方法で独自の書き換えルールを書き込む必要のあるアプリケーション(明白なセキュリティの悪夢です)に対してのみ制御します。