0

にカスタム エラー ページが/errors/404.phpあり、apache がファイルを見つけられないときに使用できるようにしたいのですが、単に URL を要求するだけでは使用できないようにしたいと考えていますhttp://mywebsite/error/404.php

現在、すべてのphpファイルへのアクセスをブロックするルールがあります(URL書き換えを使用してユーザーフレンドリーなURLを作成しているため)が、拒否するルールに一致するエラーページが原因で、Apacheがエラーページを読み取るのを停止しているようですphp ファイルにアクセスします。

どうすればこれを適切に行うことができますか?

の内容/.htaccess:

RewriteEngine On
RewriteRule ^home/?$       /index.php   [NC,L]
RewriteRule ^lessons/?$    /lessons.php [NC,L]

# Don't allow access to the actual php files.
RewriteCond %{THE_REQUEST} \.php[\ /?].*HTTP/ [NC]
RewriteRule ^.*$           -                  [R=404,L]

ErrorDocument 404 /errors/404.php
4

1 に答える 1

1

代わりにこれを試すことができます:

# Don't allow access to the actual php files.
RewriteCond %{THE_REQUEST} \.php[\ /?].*HTTP/  [NC]
RewriteCond %{REQUEST_URI}  !/errors/404\.php  [NC]
RewriteRule ^.*$  -        [R=404,L]

RewriteCond %{THE_REQUEST} \s/errors/404\.php [NC]
RewriteRule .?  -  [F]

ErrorDocument 404 /errors/404.php
  1. ファイルへのすべての要求は、スクリプト.phpにリダイレクトされ/errors/404.phpます。
  2. 存在しないファイルまたはディレクトリへのすべての要求は、/errors/404.phpスクリプトにリダイレクトされます (ErrorDocument 404 /errors/404.phpこの場合、ディレクティブが適用されます)。
  3. /errors/404.php403 Forbidden ステータス コードを返すすべての直接リクエスト。
于 2013-04-12T08:51:10.353 に答える