.htaccess を使用して無効なパスをリダイレクトします (例: "home.php/xyz")

.htaccess を使用して無効なパスをリダイレクトします (例: "home.php/xyz")

ローカル サーバーで Apache 2.4.2 を実行しています。私の Web サイトの.htaccessファイルは次のとおりです。

DirectoryIndex home.php
Options -Indexes
ErrorDocument 404 /404.php

これは、ブラウザで存在しないファイルにアクセスしようとしたときに HTTP 404 ページを表示するのに非常に有効ですが、次の構文を使用して既存のファイルにアクセスしたときにはエラー ページが表示されません。

http://localhost/<FileName>.php/<AdditionalCharacters>

たとえば、 にアクセスするとhome.php/xyz、ページは読み込まれますが、HTML 内の相対リンクはすべて壊れています。サーバーにディレクトリがhome.phpありません。何が起こっているのでしょうか?home.php

.htaccessこの動作を停止し、代わりに HTTP 404 エラーをスローするためにファイルに追加できるディレクティブまたはルールはありますか?

答え1

これは「path_info」と呼ばれる機能で、通常は単一の CGI スクリプトから Web サイト全体を実行するために使用されます (mod_rewrite などのより優れた代替手段が利用できない場合)。

URLによってCGIスクリプトがディレクトリとして扱われる場合、Apacheはそのスクリプトを通常どおり実行しますが、PATH_INFO環境変数に追加のパスコンポーネントを渡します。多くのWikiエンジンはこの機能を使用しています。たとえば、https://wiki.archlinux.org/index.php/Beginners%27_Guide/準備こちらです。

これは、パス情報を受け入れる設定。

関連情報