.htaccess 当某些文件不存在时重定向到 404 页面

2024-03-19

我使用自己的 MVC 系统已经有一段时间了,它运行得很好!

我在我的 .htaccess 中使用它

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]

现在,当页面(控制器)不存在时,我重定向到 /error(在index.php文件中)。 但有些情况下,文件夹中的图片会被删除,但仍会打印在html页面中。这将自动使浏览器调用不存在的图片(因此它将调用/error页面)

现在我想做的是,当一张图片或任何文件(我猜除了 php、html 文件)我想重定向到 404 文件而不是 /error。

我确信这个问题可以在 .htaccess 文件中解决,但我和 Apache 目前还不是好朋友。有谁是 Apache 的朋友吗?

Thanks!


例如,假设您的图像位于公共子文件夹中/images in http://example.com/images/img.png,您可以更改规则以完全排除此子目录,然后添加错误文档。该 .htaccess 应该位于您的 www 根目录中。

RewriteEngine On

#If the file does not exist, and the url doesn't start with /images
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !^/images
RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]

#If the rule above didn't match, and the file does not exist, use the ErrorDocument
ErrorDocument 404 /404.php

See

  • 错误文档的文档 http://httpd.apache.org/docs/2.2/mod/core.html#errordocument
  • mod_rewrite 的文档 http://httpd.apache.org/docs/current/mod/mod_rewrite.html
  • Apache 的免费友谊优惠券 http://ode.apache.org/img/asf.png(可能会或可能不会过期)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.htaccess 当某些文件不存在时重定向到 404 页面 的相关文章

  • 我在 apache 中使用乘客 for Rails 时收到 403 错误

    我已经安装了所需的工具 并遵循了几个教程 试图让乘客做出回应 我可以访问公共文件夹 public 500 html 或 422 hml 中的静态文件 昨天我通过虚拟主机进入 发现一些乘客错误 但一段时间后 托管重新启动了服务 从那时起我就无
  • 带有 .htaccess 的漂亮网址?

    我刚刚创建了一个新的 WordPress 页面模板 在其中运行一些 php mysql 脚本 我想对其子页面应用 mod 重写 例如我生成了以下链接 http www quotist com quotes by authors html l
  • htaccess隐藏php扩展时出错,只隐藏html

    我在使用 htaccess 隐藏网站上的 php 扩展时遇到问题 我看到很多网站试图修复它 但没有任何结果 但只有 html 扩展名对我来说是隐藏的 在我的 htaccess 上 我用这个来隐藏扩展 它就在错误页面之后 这是我的 htacc
  • 在读取正文之前拒绝 HTTP 请求

    我正在开发一个网站 用户需要上传一些非常大的文件 该网站是用 PHP 编写的 在某些情况下 我想根据标头拒绝文件 理想情况下 我想在收到标头后立即拒绝请求 而不读取正文 如果标头足以表明该文件应被拒绝 则没有理由读取 200M 的文件 此外
  • 仅当环境变量具有特定值时如何设置 Apache 标头

    我想在我的 Apache 2 4 配置中设置标头 但前提是环境变量具有特定值 SetEnv ENV NAME prod 我如何仅在以下情况下设置此标头ENV NAME is not prod Header set X Robots Tag
  • Apache mod_rewrite 将双斜杠转换为单斜杠

    我有一个像这样的网址 http example com img php url http example2 com path to image name jpg 所以我通过这个问题创建了一条规则Apache mod rewrite 复杂 U
  • mod_rewrite GUI?

    任何人都有用于开发 mod rewrite 规则的图形工具 理想情况下 它会显示重写管道 然后当给定 uri 实例时 会显示应用时的转换 让它们正确设置总是很痛苦 因此任何使其变得更容易的方法都会有所帮助 对于 htaccess 阅读 mo
  • 操作错误:尝试在 ubuntu 服务器中写入只读数据库

    我正在使用 FlaskApp 运行mod wsgi and apache2在 Ubuntu 服务器上 我尝试运行烧瓶应用程序localhost成功 然后部署到ubuntu服务器上 但是当我尝试更新数据库时 出现错误 Failed to up
  • PHP 启动:无法加载动态库 php5.4.3/ext/php_ffmpeg.dll 不是有效的 Win32 应用程序

    再会 我尝试在 Windows 7 计算机上安装 dll 文件 php ffmpeg 但不断收到此错误 29 Jan 2013 11 37 00 UTC PHP Warning PHP Startup Unable to load dyna
  • 如何在 ASP.Net MVC 中执行 301 永久重定向路由

    如何在 ASP NET MVC 中执行 HTTP 301 永久重定向路由 创建一个继承自 ActionResult 的类 public class PermanentRedirectResult ActionResult public st
  • 使用 Java 的 Apache Http 摘要身份验证

    我目前正在开发一个 Java 项目 但无法使 http 摘要身份验证正常工作 我尝试使用 Apache 网站 但没有帮助 我有一个需要 HTTP 摘要身份验证的网站 DefaultHttpClient httpclient new Defa
  • 管理面板的 htaccess 重写规则

    我的网络应用程序中有这样的 url 模式 www mysitename com foldername controller method 所有请求的页面首先被重定向到根文件夹上的index php 然后处理请求的页面 但每当我进入管理面板
  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • 控制缓存过期

    通过 Google 网站管理员工具的 PageSpeed 分析器运行我的网页后 它向我报告我的资源没有被缓存 下面是我的 htaccess 文件中直接取自 H5BP 的代码 我是否正确地假设以下过期时间设置正确 但我的实现中出现了问题 或者
  • 服务器响应中的“连接:保持活动状态”

    我正在尝试建立从 Silverlight 应用程序到 Apache 服务器托管的 PHP 页面的 HTTP 持久连接 即无需为每个 HTTP 请求创建新的 TCP 连接 为此 我需要网络服务器发送其 HTTP 响应 并将 Connectio
  • 无法更改 Xampp 中的 Apache 端口号

    我刚刚下载了Xampp服务器xampp win32 1 8 2 0 VC9 zip http www apachefriends org en xampp windows html 641文件 Windows 并尝试启动 apache 服务
  • AH10411 错误:在 apache mod_rewrite 中管理空格和 %20

    我今天更新了 Apache 到 2 4 56 1 并且加载了 htaccess过去有效的重写现在出现了 AH10411 错误 与查询中的空格有关 我正在努力寻找 适当 的解决方案 用户单击一个链接 例如 a href FISH 20J123
  • 如何在MAMP中设置环境变量?

    如何在 MAMP 版本 3 3 中设置环境变量 我可以在我的 PHP 应用程序中使用它 我已经更新了 Applications MAMP Library bin envvars and envvars std file并添加以下行 Lice
  • mod_rewrite :如果/否则输入 RewriteRule

    以下重写将以数字 4 开头的字符串作为变量传递给 process php RewriteCond REQUEST FILENAME f RewriteCond REQUEST FILENAME d RewriteRule 4 process
  • apache htaccess 将第一个段映射为参数而不干扰其他参数

    这可能是一个经典的 htaccess 问题 但我仍然找不到适合我的具体情况的问题 这是closest https stackoverflow com questions 9299793 apache httaccess rewriting我

随机推荐

  • 在python中将pdf转换为docx格式

    请问如何将pdf转换为docx 我尝试使用 pdfminer 转换为 html 来提取文本 但看起来仍然不够好 pdf2docx 安装pdf2docx包点击here https github com dothinking pdf2docx
  • Dialogflow动态实体问题

    我正在尝试使用 Dialogflow api ai 创建一个 Actions on Google 应用程序 我需要获取火车状态 所以我的实体将是火车号码或火车名称 火车的名字有很多 所以我无法手动添加实体值 如何将实体值动态添加到控制台 您
  • Spring WebFlux Webclient 作为 Mono 接收应用程序/八位字节流文件

    我正在 Kotlin 中制作一个小型 Spring WebFlux 应用程序的原型 该应用程序需要从远程 REST 端点获取 tar 存档并将其存储在本地磁盘上 听起来很简单 我首先创建了一个集成测试 该测试启动 Spring 服务器和另一
  • NHibernate Definitive Cascade 应用指南

    是否有任何互联网资源对 NHibernate 的所有级联设置提供明确的指南 其中包括类结构 HBM 以及每个级联设置的操作对与 NH 的所有关系的影响的示例 此外 如果有以最正确的方式完成常见关联的示例 例如设置一个状态表 您将永远不会最终
  • 沸腾的 MSYS shell - 它可以更换吗?

    我需要一个适用于 MSYS 的可用外壳 这是我目前的困境 默认的 rxvt exe 有一个滚动条以及复制和粘贴功能 但不会将控制字符或箭头键发送到 shell 中正在运行的程序 如解释器 调试器 当使用 Haskell 解释器 ghci 时
  • ASP.NET MVC - ID 字段的自定义模型绑定器

    我有以下实体 public class Category public virtual int CategoryID get set Required ErrorMessage Section is required public virt
  • GitoLite 和 Git 可以使用 LDAP 而不是 SSH 密钥吗

    我的公司正在考虑使用 git 和 gitolite 但不想使用 SSH 密钥 而是像使用 LDAP 一样工作 这可以做到吗 我从来没有见过这样做 我在每个地方都有这个设置 并且总是使用 SSH 密钥 是的 您可以毫无问题地做到这一点 你只需
  • Selenium:指向默认 Chrome 会话

    虽然我意识到这不是 好的 做法 我有一个用例 我需要将 Selenium 驱动程序指向 连接 到我的默认 Chrome 会话 配置文件 我的默认配置文件在这里 Library Caches Google Chrome Default 这是我
  • 在 Swift 中从字符串创建 ZIP 文件

    let data InPractiseThisWillBeAReheallyLongString createDir let docsDir FileManager default urls for documentDirectory in
  • 为什么连接到indexedDB时,有时会在onupgradeneeded之前调用onsuccess?

    我在使用 IndexedDB 时遇到问题 在 Firefox 18 上 当我创建新数据库时 onsuccess方法同时被调用有onupgradeneeded 在 Chrome 24 上 这是我想要的行为 onsuccess方法仅在之后调用o
  • android.os.Looper 中的方法 myLooper 未使用协程进行模拟

    我想在 JUnit 中对协程进行一些测试 但遇到了一些问题 代码很简单 Test fun coroutineTest runBlocking Unconfined doesnt work too runBlocking delay 1000
  • 在 Tapestry 5.3 中链接多个选择组件(Ajax 更新)

    我正在使用 Tapestry 5 3 7 并且我想使用 Ajax 链接选择表单元素 如果我在选择元素中选择一个选项 则另一个选择会根据您的第一个选择出现选择另一个元素 我尝试了挂毯文档中的示例 并针对我的项目进行了调整 尽管我的自定义代码非
  • 单元测试错误“未将对象引用设置为对象的实例。”

    在我的控制器中 我想测试控制器是否正在调用存储库方法 这是方法控制器 HttpGet public ActionResult GetModulePropertyName string moduleTypeValue var temp mod
  • 如何根据日历将 JSON 数据分组到杂草中?

    我正在做一些 d3JS 编程来生成带有 JSON 数据的图形 test date 1 5 2014 allocated 14 14 unallocated 7 14 date 1 6 2014 allocated 10 38 unalloc
  • 使用 Cordova 3.7 从 iOS 8 上的 www 文件夹加载资源 (file://)

    我有一个混合应用程序 可以使用 Cordova 3 7 和 jQuery Mobile 1 3 2 在 iOS 7 上完美运行 我正在 iOS 8 上测试它 但它坏了 我使用绝对路径请求应用程序的每个页面 视图 使用file 协议 例如 f
  • 如何在 Windows 上模拟 iPad 浏览器

    如何在windows下模拟iPad浏览器 我知道用户代理字符串 并且我知道浏览器宽度 高度 屏幕宽度 高度 我相信 如果您模拟 iPad 的用户代理并适当设置窗口大小 您就可以使用 Safari Windows 从 apple com 下载
  • 如何在 UML 属性中指定枚举文字作为默认值?

    我目前使用 EMF UML Implementation 进行一些模型转换 在我的模型转换中 我创建了一个具有一些属性的 uml 类 这些属性是我也创建的枚举类型 某些属性应该获得默认值 默认值应该是枚举文字 现在的问题是 如何将枚举文字获
  • 如何在 jQuery 中将值从一个页面传递到另一个页面

    我有两个 jQuery 页面 Page1 和 Page2 并且我能够在 Page1 中获取输入 The somval 1000 第 1 页用户输入某个值 我已经存储了该值 var val somval 现在在第二页中 我需要获取第1页中so
  • 使用 keycloak 进行 Spring Boot 测试

    我正在尝试运行简单的单元测试 Keycloak 以正确的方式配置 我测试了它 我的 mvc 应用程序正在连接并且用户已通过身份验证 但现在我尝试测试我的控制器 即使 我使用 spring slices keycloak 适配器被调用并给我错
  • .htaccess 当某些文件不存在时重定向到 404 页面

    我使用自己的 MVC 系统已经有一段时间了 它运行得很好 我在我的 htaccess 中使用它 RewriteEngine On RewriteCond REQUEST FILENAME d RewriteCond REQUEST FILE