controller/foo.xtn
のようなルートを処理しようとするたびに、YiiはUnable to determine the path info of the current request.
と訴えます。 xtn
をアクションパラメータ、つまりactionFoo($xtn)
に変換してcontroller/foo?type=xtn
に変換することで、これらのルートを処理したいと考えています。私の計画は、この動作を定義するためにUrlRuleを書くことですが、パス情報解析の失敗を回避するにはどうすればよいですか?ファイルのようなURLルートの解析を許可する
私はenablePrettyUrl
を使用していますが、enableStrictParsing
としたいと思いますが、今のところそれを扱うことはできません。
編集:どのような動作し、どのようなことはしません -
controller/foo/abc?type=xtn ---> actionFoo('abc', 'xtn') # works
controller/foo/abc/xtn ---> actionFoo('abc', 'xtn') # works
controller/foo/abc.xtn ---> actionFoo('abc', 'xtn') # doesn't work
エラーがcontroller/foo/abc.xtn
を解析しようとしたときにgetPathInfo()
によってスローされるので、WebサーバでのYii経由でルーティングされています。 (今のPHP内部Webサーバを使用して)
ルーティングの設定:上記の設定を使用して
<?php
// www/routing.php
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
return false;
} else {
include __DIR__ . '/../web/index.php';
}
は、私はPHPサーバがYiiのが読んでいるものですREQUEST_URI変数を設定します見ることができます。
'REQUEST_URI' => '/controller/foo/abc.xtn?app=4'
私はこれがウェブサーバーの問題ではないと思います。ここでの$ _SERVER配列における唯一の大きな違いです:あなたはYiiののsource codeを読めば
# fails in getPathInfo()
'REQUEST_URI' => '/feeds/strings/en.json?app=4',
'SCRIPT_NAME' => '/feeds/strings/en.json',
'SCRIPT_FILENAME' => '/Users/darvids0n/NetBeansProjects/php-web-services/web/www/routing.php',
'PHP_SELF' => '/feeds/strings/en.json',
# works
'REQUEST_URI' => '/feeds/strings/en?app=4',
'SCRIPT_NAME' => '/index.php',
'SCRIPT_FILENAME' => '/Users/darvids0n/NetBeansProjects/php-web-services/web/index.php',
'PATH_INFO' => '/feeds/strings/en',
'PHP_SELF' => '/index.php/feeds/strings/en',
、しかし、あなたはPATH_INFOの欠如は、実際に「決定パス情報」に失敗に考慮しないことがわかります。
ない私は確かにこれがどのように役立つかについてあなたに従ってください。私のURLルールにかかわらず、リクエストをルーティングするための予備ステップの1つは、['getPathInfo()'](https://github.com/yiisoft/yii2/blob/master/framework/web/UrlManager.php# L237)。ルールの反復処理を開始する前に例外がスローされます。 – darvids0n
この場合、サーバー構成に問題があります。それはApacheですか?もしそうなら、ホスト設定を貼り付けることができますか? – Bizley
貼り付けられたルーティング設定とその他のいくつかのもの。 – darvids0n