私はhtaccessをカスタム404エラーページ - PHPのページのためにのみ
ErrorDocument 404 /404.php
と404のためにパーソナライズされたページを持っているそれは正常に動作しますが、それは.jpgのすべてを取り、の.js、.cssの等...
私はそれを.phpにして、他のすべてに対して通常の404エラーを出すことを望みます。
どこでもそのオプションが見つかりませんでした。
ありがとうございました。
私はhtaccessをカスタム404エラーページ - PHPのページのためにのみ
ErrorDocument 404 /404.php
と404のためにパーソナライズされたページを持っているそれは正常に動作しますが、それは.jpgのすべてを取り、の.js、.cssの等...
私はそれを.phpにして、他のすべてに対して通常の404エラーを出すことを望みます。
どこでもそのオプションが見つかりませんでした。
ありがとうございました。
わからないが、これを試してみる:Files Directiveドキュメントから
<Files ~ "\.php$">
ErrorDocument 404 /404.php
</Files>
引用:
<ファイル>ディレクティブは、ファイル名に囲まれた ディレクティブの適用範囲を制限します。
+1これは完璧に動作し、それはちょうどOPが尋ねたものです – ShadowScripter
うまく動作します!あなたの助けを大変ありがとう:-) – user1040899
あり、これにいくつかの可能なアプローチがありますが、私は、次のいずれかを実行します:
@LazyOneにより示唆されるようにあなたのカスタムドキュメントへ.php
拡張子を持つファイルのみをリダイレクトするために、mod_rewrite
を使用することができます。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f # Only redirect to error for files that don't exist
RewriteRule ^(.*)\.php$ /404.php [L]
それとも、あなたがすでにそうであるようにPHPのエラーハンドラを介してすべてのものを指示し、要求されたリソースは、PHPスクリプトであるかどうかを判断するためにPHPを使用することができます。
<?php
if (strtolower(substr($_SERVER['SCRIPT_URL'], -4)) != '.php') {
// If the requested resource does not have a .php extension, include the standard error doc and exit
include '404.html';
exit;
}
// Handle .php 404s here
この2つ目のアプローチの欠点は、標準エラー文書を書き換えてPHPがユーザーに表示する動的情報(要求されたリソースパスなど)を取得できるようにすることです。
$_SERVER['REQUEST_URI']
を利用して、簡単にエラーになったファイルの終了を確認することができますし、それはあなたのニーズに対応するか、単に異なる404
は
$bad_url = $_SERVER['REQUEST_URI'];
$bad_extension = substr(strrchr($bad_url,'.'),1);
if($bad_extension != "php"){
//Not PHP
}else{
//PHP
}
404の代わりに301を送信することはかなり奇妙に見える –
あなたは「それはすべてを取る」ことで何を意味していますあなたの404.phpファイルでこれを入れて? 404は、PHPリクエストや画像に関係なく、見つからないHTTPリクエストのレスポンスコードです。 –
私が意味するのは、www.example.com/img/errorimg.jpgをすればwww.example.com/404.phpに導かれ、私はそれを望んでいません。 – user1040899
URLリライティング(mod_rewrite)でこれを実装してみてください。存在しない.phpファイルへのリクエストをあなたのカスタム404.phpにリダイレクトしてください。それは可能です(3行または4行のみ) – LazyOne