0

Restlerを構成するときは、次の書き換えルールを作成することをお勧めします。

DirectoryIndex index.php
<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteRule ^$ index.php [QSA,L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

これを REST ディレクトリのルートにある .htaccess ファイルに入れましたが、このルールが実行されると 500 サーバー エラーが発生します。Apache エラー ログのエラー メッセージは次のとおりです。

[Wed Oct 10 10:39:30 2012] [alert] [client 127.0.0.1] /public/api/.htaccess: RewriteCond: unknown flag 'QSA'
[Wed Oct 10 10:39:30 2012] [error] [client 127.0.0.1] File does not exist: /public/favicon.ico

favicon.ico ファイルがないことは無視できると思いますが、「unknown flag 'QSA'」というエラーが気になります。書き換えルールについてはほとんど知らないので、助けていただければ幸いです。

Restler に精通している人のために、私は 3.0.0rc2 を使用しています (それが重要な場合)。また、index.php への明示的な呼び出しを使用すると、404 JSON エラー応答 (肯定的な改善) が返されるほどうまく機能しますが、上記のように、書き換えルールに依存すると、500 サーバー エラーが返されるだけであることも指摘しておく価値があります。 :

http://localhost/api/index.php/say/hi    - WORKS (gives JSON 404 error)
http://locahost/api/say/hi               - 500 SERVER ERROR
4

2 に答える 2

1

  1. エラーがあなたが持っているルールと関係があるようには見えません:

    /public/api/.htaccess: RewriteCond: 不明なフラグ 'QSA'

これは、QSA フラグが の不明なフラグでありRewriteCond、その後にfavicon.iconot found が続くことを示しているため、REST ディレクトリへの要求とは無関係であると推測しています。

  1. があった場合AllowOverride None、htaccess ファイルは完全に無視されます。htaccess ファイル内でオーバーライドできる構成オプションにはさまざまな側面があります。Noneつまり、htaccess は構成をオーバーライドできないため、無視されます。

  2. ここでは、QSA フラグはまったく必要ありません。クエリ文字列を書き換えて、元のクエリ文字列を最後に追加したい場合にのみ必要です。デフォルトでは、とにかくクエリ文字列が追加されます。

于 2012-10-10T15:50:38.047 に答える
0

興味深い... JSON 404 メッセージを調べていて、次の投稿を見つけました。

Restler は常に not found を返します

404 エラーを解決しただけでなく、500 サーバー エラーの修正にも役立ちました。私がする必要があったのは、http.conf の AllowOverride を All に変更することだけでした。

なぜこれが起こっているのか誰かが教えてくれたらまだ興味がありますが、これは今ではうまくいきます。

于 2012-10-10T10:40:20.313 に答える