繁体   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