.htaccess ファイルに次のものがあります。
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteCond %{REQUEST_FILENAME} !admin\.php$
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule ^.*$ - [G]
RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
ファイルが有効なファイルである場合、何も起こらないはずです(ファイルは正常に処理されるはずです)-これは機能します。
次に、ファイルの拡張子が .php で、admin.php でない場合、410 Gone ステータスが返されます。これは機能しません。常に次のディレクティブに進み、2 番目のブロックは無視されます。
URL の例: http://<my site>/file.php
- 410 を返さず、最後のディレクティブに移動します。
なぜこうなった?
(また、stackoverflowがこの質問のサイトだとは思いませんが、何が何であるかはわかりませんでした:/)
編集:おそらく、これは Windows ローカルホストでは正常に機能しますが、ライブ Linux サーバーでは機能しないことを指摘する必要があります。
EDIT2:ドットがエスケープされたライブボックスではまだ機能しません。2 番目のブロックを最初のブロックの上に移動すると、すべてがなくなります。