php - 当日志显示已将请求重写为 php 文件时,Apache 仍会加载测试页面
问题描述
我已经配置了一个 apache 虚拟主机以将 localhost 指向 /var/www/html/mysite/public ,其中包含一个 htaccess 文件,该文件重写所有请求到同一目录中的 handle.php,我知道 htaccess 文件有效,因为其中的语法错误导致内部出现服务器错误
但是当我转到 localhost/ 时,我得到了 apache 测试页面,我LogLevel alert rewrite:trace3
可以查看发生了什么,并且日志显示它正在尝试重写对 handle.php 的请求,但是......不是吗?这里发生了什么
handle.php 只包含die('test');
所以我知道它是否真的使用了那个文件
[Mon Dec 03 09:23:09.248162 2018] [rewrite:trace3] [pid 183] mod_rewrite.c(482): [client snip:35984] snip - - [localhost/sid#55879ca14140][rid#55879ca71a60/initial] [perdir /var/www/html/mysite/public/] strip per-dir prefix: /var/www/html/mysite/public/ ->
[Mon Dec 03 09:23:09.248270 2018] [rewrite:trace3] [pid 183] mod_rewrite.c(482): [client snip:35984] snip - - [localhost/sid#55879ca14140][rid#55879ca71a60/initial] [perdir /var/www/html/mysite/public/] applying pattern '^(.*)/$' to uri ''
[Mon Dec 03 09:23:09.248298 2018] [rewrite:trace3] [pid 183] mod_rewrite.c(482): [client snip:35984] snip - - [localhost/sid#55879ca14140][rid#55879ca71a60/initial] [perdir /var/www/html/mysite/public/] strip per-dir prefix: /var/www/html/mysite/public/ ->
[Mon Dec 03 09:23:09.248312 2018] [rewrite:trace3] [pid 183] mod_rewrite.c(482): [client snip:35984] snip - - [localhost/sid#55879ca14140][rid#55879ca71a60/initial] [perdir /var/www/html/mysite/public/] applying pattern '^' to uri ''
[Mon Dec 03 09:23:09.248362 2018] [rewrite:trace1] [pid 183] mod_rewrite.c(482): [client snip:35984] snip - - [localhost/sid#55879ca14140][rid#55879ca71a60/initial] [perdir /var/www/html/mysite/public/] pass through /var/www/html/mysite/public/
[Mon Dec 03 09:23:09.248816 2018] [rewrite:trace3] [pid 183] mod_rewrite.c(482): [client snip:35984] snip - - [localhost/sid#55879ca14140][rid#55879ca77a90/subreq] [perdir /var/www/html/mysite/public/] strip per-dir prefix: /var/www/html/mysite/public/index.php -> index.php
[Mon Dec 03 09:23:09.248840 2018] [rewrite:trace3] [pid 183] mod_rewrite.c(482): [client snip:35984] snip - - [localhost/sid#55879ca14140][rid#55879ca77a90/subreq] [perdir /var/www/html/mysite/public/] applying pattern '^' to uri 'index.php'
[Mon Dec 03 09:23:09.248907 2018] [rewrite:trace2] [pid 183] mod_rewrite.c(482): [client snip:35984] snip - - [localhost/sid#55879ca14140][rid#55879ca77a90/subreq] [perdir /var/www/html/mysite/public/] rewrite 'index.php' -> 'handle.php'
[Mon Dec 03 09:23:09.248922 2018] [rewrite:trace3] [pid 183] mod_rewrite.c(482): [client snip:35984] snip - - [localhost/sid#55879ca14140][rid#55879ca77a90/subreq] [perdir /var/www/html/mysite/public/] add per-dir prefix: handle.php -> /var/www/html/mysite/public/handle.php
[Mon Dec 03 09:23:09.248936 2018] [rewrite:trace2] [pid 183] mod_rewrite.c(482): [client snip:35984] snip - - [localhost/sid#55879ca14140][rid#55879ca77a90/subreq] [perdir /var/www/html/mysite/public/] trying to replace prefix /var/www/html/mysite/public/ with /
[Mon Dec 03 09:23:09.248949 2018] [rewrite:trace1] [pid 183] mod_rewrite.c(482): [client snip:35984] snip - - [localhost/sid#55879ca14140][rid#55879ca77a90/subreq] [perdir /var/www/html/mysite/public/] internal redirect with /handle.php [INTERNAL REDIRECT]
解决方案
这是因为我的 apache 在 docker 容器中,并且 docker 阻止 apache 读取不存在的目录,strace 在调试时非常有用。见https://github.com/moby/moby/issues/1295
推荐阅读
- spring-cloud-dataflow - 查找 Spring Cloud Dataflow 服务器运行时的日志文件
- java - 使用 Curl 制作 android 登录表单
- c# - C# - 为高度并发的方法设置 CancellationTokens 的正确方法
- python-3.x - 如何将用户的消息分配到 discord.py 中的变量中?
- javascript - 如果键值对于该节点是唯一的并且已提供,如何将节点值更新为用户在嵌套 JSON 结构中提供的值?
- prometheus - 如何仅查询标签的一个实例?
- sqlite - 从重复记录中提取统计数据
- python - Keras ImageDataGenerator 在保存到目录时无意中改变了我的图像的颜色
- admob - 生成签名apk后为什么不在我的应用程序中显示Admob广告。它在我测试示例应用程序ID和示例应用程序单元ID时显示
- python - 小部件在其他系统上的 PyQt5 中被切断