1

私の共有サーバーで、カスタム 404 ページを作成しようとしています。この特定のホストは SHTML を使用しており、書き換えることができません..

uriを表示できます:

<!--#echo var="REQUEST_URI" -->

URI を変数の一部にすることができます。

<!--#set var="URI" value="404.php?xxx=$REQUEST_URI" -->

自分の 404.php ページにリダイレクトできます。

<!--#exec cgi="404.php" -->

しかし、URI 変数の値をリダイレクトに入れることができないようです。これらのどれも動作しません:

<!--#exec cgi="404.php?xxx=$REQUEST_URI" -->

<!--#exec cgi="$URI" -->

<!--#exec cgi="URI" -->

うまくいくアイデアはありますか?前もって感謝します。

4

1 に答える 1

1

要素ドキュメントexecから:

CGI スクリプトには、クライアントからの元の要求の PATH_INFO とクエリ文字列 (QUERY_STRING) が与えられます。これらは URL パスで指定できません。インクルード変数は、標準の CGI 環境に加えて、スクリプトで使用できます。

...

exec cgi よりも include virtual 要素を使用する必要があります。特に、クエリ文字列を使用して CGI プログラムに追加の引数を渡す必要がある場合、これは exec cgi では実行できませんが、次に示すように include virtual で実行できます。

<!--#include virtual="/cgi-bin/example.cgi?argument=value" -->

次の 2 つのオプションがあります。

  • 404.php既存の<!--#exec cgi要素を介してスクリプトを使用します。関連する CGI 変数をすぐに使用できる必要があります (例: $_SERVER['REQUEST_URI'])。
  • 要素を使用するように変更し<!--#include virtual、必要な変数を渡します。

個人的には、最初のオプションを使用します。

于 2014-05-09T09:06:42.323 に答える