- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过 .php 处理对不存在文件的所有请求
.htaccess
配置:
ErrorDocument 404 /index.php
DirectoryIndex index.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]
这似乎大部分工作,但一些特定的文件扩展名(.txt、.jpg,还有更多?)由 apache 处理,而不是通过 php 传递。
http://localhost:8000/home -> 显示主页
http://localhost:8000/file.zip(不存在)-> 显示由 PHP 提供的自定义样式的 404 页面
http://localhost:8000/exists.txt(现有文件)-> 提供现有文件
http://localhost:8000/doesnotexist.txt(不存在)-> 显示默认的 apache 404 页面(与未安装 PHP 时相同)
是否有特定文件扩展名的默认 apache 处理程序?
如何将所有请求设置为通过 index.php 传递?
最佳答案
我复制了您使用 Docker 和 php 7.4-apache 镜像进行的实验。当打开 url http://localhost:8000/doesnotexist.txt
时,我将按预期转到 index.php 文件。底部的三个重写规则将所有内容重写到 index.php。
首先:您还没有发布 docker-compose.yml
或 Dockerfile
,所以可以肯定的是:您必须通过命令为 Apache 启用重写在 dockerfile 或自定义 Dockerfile 中,如下所示:
# Dockerfile
FROM php:7.4-apache
RUN a2enmod rewrite
如果您没有启用重写,则会出现错误 500,因为重写规则周围没有 if 条件。
如果你确实启用了重写,行为仍然很奇怪,因为即使 ErrorDocument 404/index.php
行不存在,底部重写应该使 index.php 无论如何都被提供.换句话说:.htaccess
中的底部三行将确保不提供 404,因为所有内容都被重写到 index.php。
当您说“默认的 apache 404 页面”时,您指的是“未找到”页面吗?
Not Found (H1 tag)
The requested URL was not found on this server.
Apache/2.4.52 (Debian) Server at localhost Port 8000
尝试删除并重建容器,这样就不会出现奇怪的缓存问题。
那你的 index.php
呢?那里有什么东西可以触发奇怪的东西吗?你能把它贴在这里吗?
关于php - Apache 使用它自己的 404 处理程序而不是 index.php 来处理 .txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70849141/
我知道我要求太多,但也许你也可以帮助解决这个问题。 a.txt 包含单词,b.txt 包含字符串。 我想知道 b.txt 中有多少个字符串以 a.txt 中的单词结尾 例子:一个.txt apple
这个问题在这里已经有了答案: erge text files ordered by numerical filenames in Bash (3 个答案) 关闭 4 年前。 我有一个文件夹,其中包含
我在一个目录中有几个平面文件 (.txt)。所有这些文件的格式都是 *.txt.txt,所以我想将其重命名为 *.txt?有什么简单的方法可以一起重命名? 当我尝试 ren *.txt.txt *.t
这个问题在这里已经有了答案: How can I use a file in a command and redirect output to the same file without trunc
您是否有任何理由应该或不应该允许访问 javascript 或 css 文件?特别是常见的文件,如 jquery。 最佳答案 人们普遍认为,搜索引擎每天为给定站点分配一定数量的带宽或 URL。因此,一
Closed. This question is off-topic。它当前不接受答案。 想要改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic。 已关闭
这是相同的代码。我面临的问题是,我无法在任何文件上写入任何内容。请帮忙解决这个问题 #include #include int main() { FILE *fe; FILE *fo;
我想要特定于域的 robots.txt,到目前为止这有效: RewriteRule ^robots\.txt$ robots/%{HTTP_HOST}.txt [L] 但我希望有一个后备方案,因此如果
我正在调试一些构建成功运行的 SQL 命令的代码。 然而,在查询结束时,查询结果似乎被写入了一个文本文件。 完整的查询如下 echo SELECT DATE,DATETABLE,DATE,APPDAT
这个问题已经有答案了: difference between grep Vs cat and grep (5 个回答) 已关闭 8 年前。 我看到一个例子,其中有人这样做: cat source.tx
我想将表中的数据从以 csv 格式存储的文本文件插入到 sql server 表中。为此,我正在使用批量插入语句。现在我需要在“From”子句中指定文件名。我不想在那里使用网络位置或本地位置。我想将我
假设我有一个测试文件夹 (test.domain.com) 并且我不希望搜索引擎在其中抓取,我是否需要在测试文件夹中有一个 robots.txt 或者我可以只放置一个 robots.txt在根目录中,
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
这个问题在这里已经有了答案: order of directives in robots.txt, do they overwrite each other or complement each ot
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 8年前关闭。 Improve this
已关闭。这个问题是 not about programming or software development 。目前不接受答案。 这个问题似乎不是关于 a specific programming
在过去的几年中,当我引用“名字”字段的文本框控件时,我一直使用 FirstNameTxt 命名约定。但是,我注意到大多数其他开发人员倾向于使用命名约定 txtFirstName 哪个是最好的约定?为什
我只想允许目录 /minsc 中的一个文件,但我想禁止该目录的其余部分。 现在 robots.txt 中是这样的: User-agent: * Crawl-delay: 10 # Directorie
我正在编写一个将 youtube.com 映射到另一个域的代理服务器(因此用户可以轻松地从德国等国家/地区访问 youtube,而无需审查搜索结果和视频)。 不幸的是,我的 robots.txt 中存
我没有编程技能,但有一项非常具体的任务:我必须将一个庞大的文本文件拆分成多个,并在特定的文本标记 (@) 处拆分它们。我决定尝试使用 Powershell 脚本来完成此任务。 到目前为止,这就是我想出
我是一名优秀的程序员,十分优秀!