1

.htaccess を使用して 404 エラー ページを簡単にセットアップできることを知っています。

私が理解しているように、ページが見つからない場合、エラーがブラウザーに返され、404 ページが表示されます。ユーザーは、この「エラー」を認識している場合と認識していない場合があります。

私がやりたいことは、ユーザーが page1.php、page2.php、page3.php などを入力して、page1、page2、page3 などを印刷するページに移動できるようにすることです。

これは、ページ 1、ページ 2、ページ 3 などのロジックが非常に似ているためです。ユーザーを同じページに送り、PHP サーバー変数を使用して何をすべきかを計算する方が簡単だと思います。有効なページかどうかを判断し、404 エラーをスローするか、正しいメッセージを出力します。

これは可能ですか?それともただの愚かな考え?

URL に影響を与えず、ユーザーが入力したままにしたいと思います。

ありがとう。

4

1 に答える 1

4

これは間違いなく愚かな考えではありません。

コンテンツを配信するインスタンス、またはコンテンツが見つからない場合はエラーページは、Webサーバーです。そのロジックをPHPで処理する場合は、すべてのリクエストを同じPHPファイルに渡すようにWebサーバーに指示できます。次に、$_SERVER変数を使用して、ユーザーが何を要求していたかを判断し、コンテンツを提供して、正しいステータスコードを送信できます(例404)。

Apacheでは、バージョン2.2.16以降を使用している場合、フォールバックリソースを定義できます。これにより、存在しないファイルへのリクエストが指定されたファイルにリダイレクトされます。

<Directory /var/www/my_blog>
  FallbackResource index.php
</Directory>

mod_rewrite古いバージョンのApacheでは、リクエストをリダイレクトするために使用できます。

<Directory /var/www/my_blog>
  RewriteBase /my_blog

  RewriteCond /var/www/my_blog/%{REQUEST_FILENAME} !-f
  RewriteCond /var/www/my_blog/%{REQUEST_FILENAME} !-d
  RewriteRule ^ index.php [PT]
</Directory>
于 2013-01-22T18:27:18.573 に答える