簡體   English   中英

自定義 404 錯誤頁面——僅適用於 PHP 頁面

[英]Custom 404 error page -- for PHP pages only

我有一個帶有 htaccess 的 404 個性化頁面

ErrorDocument 404 /404.php

它工作正常,但它需要所有 .jpg、.js、.css 等...
我希望它只使用 .php 並為所有其他人執行正常的 404 錯誤。

我沒有在任何地方找到那個選項。

非常感謝。

不確定,但試試這個:

<Files ~ "\.php$">
    ErrorDocument 404 /404.php
</Files>

引用文件指令文檔:

<Files> 指令通過文件名限制所包含指令的范圍。

對此有幾種可能的方法,但我會執行以下操作之一:

您可以按照@LazyOne 的建議使用mod_rewrite僅將帶有.php擴展名的文件重定向到您的自定義文檔:

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

第二種方法的缺點是您可能需要重寫標准錯誤文檔,以便它使用 PHP 獲取動態信息以顯示給用戶,例如和請求的資源路徑。

使用$_SERVER['REQUEST_URI'] ,您可以輕松檢查導致錯誤的文件的結尾,然后如果它不符合您的需要或僅呈現不同的 404,則將標頭拋出到正常的 404

把它放在你的 404.php 文件中

$bad_url = $_SERVER['REQUEST_URI'];
$bad_extension = substr(strrchr($bad_url,'.'),1);

if($bad_extension != "php"){
    //Not PHP
}else{
    //PHP
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM