質問

時々 (特に mod_rewrite が使用できない場合)、このパス スキームが使用されることに気づきました。

http://host/path/index.php/clean_url_here
--------------------------^

これ らしい 少なくとも Apache では動作します。 index.php が呼び出され、クエリを実行できます。 /clean_url_here 経由部分 $_SERVER['PATH_INFO']. 。PHPでも 一種の広告 この機能。また、例えば、 コードイグナイター フレームワークは、この手法を URL のデフォルトとして使用します。

質問: その技術はどの程度信頼できるものですか?Apache が呼び出さない状況はありますか index.php しかし、パスを解決しようとしますか?lighttpd、nginx、IIS、AOLServer についてはどうですか?

ServerFault に関する質問ですか? これは、PHP コード内でこの機能を使用することに関係があると思います。そこで、ここで質問させていただきます。

補遺: VolkerK が提案したように、この質問の合理的な拡張は次のとおりです。プログラマーはどのようにして存在に影響を与えることができますか? $_SERVER['PATH_INFO'] さまざまな種類のサーバーで?

役に立ちましたか?

解決

これはスタックオーバーフローとサーバーフォールトにも同様に適した質問だと思います。例えば。開発者として私が言えるのは、pathinfo はユーザー入力と同じくらい信頼できる (つまり、事実上あらゆるものを含めることができる) ということだけであり、Web サーバーのバージョンと構成に応じて、スクリプトがそれを受け取る場合と受け取らない場合があります。

アパッチ: パス情報を受け入れる
IIS:例えば スクリプトマッピングの許可パス情報 その他
などなど...

ただし、サーバー管理者は、「実際の環境では」どのような設定が予想されるのか、また、その設定が推奨される理由を教えてくれる可能性があります。
したがって、質問は次のようになります。あなた (または予想されるユーザーベース) がサーバー構成にどの程度の影響を与えているか。

他のヒント

パス情報を受け入れる これを機能させるには、を有効にする必要があります。

私の経験から言えば、 PATH_INFO 通常、通常の Web ホスティング環境やサーバー設定 (IIS 上であっても) で使用できますが、まれに使用できない場合があります。できるだけ多くのプラットフォームにデプロイ可能であると想定されるアプリケーションを構築する場合、私はハードコーディングされたレベルで path_info を信頼しません。

できる限り、ラッパー関数を構築しようとします build_url() 構成設定に応じて、次のいずれかを使用します。

  • 生の URL www.example.com/index.php?clean_url=clean_url_here
  • path_info メカニズム www.example.com/index.php/clean_url
  • mod_rewrite www.example.com/clean_url

そしてそれをアプリケーションが発行するすべての URL で使用します。

この URL の形式を認識しない単純なスクリプト (自動リンクなど) が存在する可能性があります。これにより、コンテンツへのリンクが作成される可能性が低くなります。
これらのタスクでは独自の正規表現パターンが一般的であるため、失敗する可能性が非常に高くなります。

技術的には、これらの URL は問題ありません。SEOの観点から言えば、それらは「完璧ではない」。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top