3

私はこれを取得しません:

http://localhost/index.php/articles/edit/1/my-first-article

この URL は、 Kohana フレームワークのドキュメントに例として記載されています。インストールのファイルを調べてみましたが、それとは関係のない自分のもの以外に .htaccess はありません。

では、index.php が呼び出されたのに、パラメータとして、URL に追加されたディレクトリのように見えるのはどうしてでしょうか? それは「本物」に見えません。

それとも、ネイティブの PHP/Apache/HTTP が実際にどのように機能するのでしょうか? 私が理解しているように、/ は常に「ねえ、ディレクトリ!」と言っています。私にはまったく意味がありません...どうしてそれが可能ですか?それとも、私が見たり見つけたりできない.htaccessがどこかにありますか?

4

6 に答える 6

10

Apacheドキュメントから:

AcceptPathInfoディレクティブ

このディレクティブは、実際のファイル名(または既存のディレクトリに存在しないファイル)に続く末尾のパス名情報を含む要求を受け入れるか拒否するかを制御します。末尾のパス名情報は、PATH_INFO環境変数のスクリプトで使用できるようにすることができます。

たとえば、場所/test/が単一のファイルhere.htmlのみを含むディレクトリを指していると仮定します。次に、/ test / here.html /moreと/test/nothere.html/moreの両方のリクエストは、/moreをPATH_INFOとして収集します。

したがって、この設定はhttpd.confのようにどこかで有効になっていると思います。これは、mod_rewriteと同様に、さまざまな場所で有効化/構成できることに注意してください。ここを参照してください

于 2009-06-08T20:49:32.110 に答える
2

$_SERVER["PATH_INFO"]PHPでは、変数を使用してファイル名の後にデータを取得できます。これにより、基本的にGET変数を使用せずに情報を取得できます。つまり、Googleと共同で静的ページを使用していると見なされます。mod_rewriteこれは基本的に、有効になっていることが多いが、有効になっていないことが多い代替手段mod_rewriteです。

これはあなたには明らかかもしれませんが、私にはすぐにはわかりませんでした。ファイル名を使用しない限り、これはインデックスページでは正しく機能しません。たとえば、http://example.com/test/my/get/paramsは機能しませんが、機能しhttp://example.com/test/index.php/my/get/paramsます。

于 2009-06-08T21:48:34.517 に答える
1

サーバーのAcceptPathInfoがオンになっています。:)

于 2009-06-08T20:56:54.967 に答える
1

私は Kohana を使用していないので、私の方法が役立つかどうかはわかりませんが、サーバーが .htaccess ファイルをサポートしていない (またはルールを書き換えている) 場合、私の「フレームワーク」は次のような URI を生成します。

http://www.domain.com/?/articles/edit/1/my-first-article (?)

これは、Frog フレームワークで使用される同様の方法で、単に解析$_SERVER['REQUEST_URI'](または$_SERVER['HTTP-X-REWRITE-URL']Windows サーバー上) して '/' で展開します。

このメソッドは完全に書き換えに依存せず、多かれ少なかれ SEO フレンドリーな URI を生成します

それがあなたに役立つことを願っています。

于 2009-06-09T14:59:33.687 に答える
0

おそらくここではそうではなく、確かに推奨されておらず、おそらく正しい答えではありません...

しかし ...

404 ページを使用してリクエストを解析し、適切なページにその情報を含めている人を見てきました。

于 2009-06-08T22:06:03.453 に答える
0

CGI 環境変数の PATH_INFO を参照してください。

于 2009-06-08T22:11:57.420 に答える