我在Apache / 2.4.0和PHP / 5.6.3中使用XAMPP,我注意到像http://localhost/*
这样的网址中的第一个字符星号(*)会导致apache在运行PHP之前返回访问禁止页面。我没有注意到任何其他网站使用星号字符的任何东西,所以我知道它必须是一个无效的字符由于某种原因但我无法找到任何东西。有人知道如何在xampp中覆盖它,所以我可以在PHP中进行自己的自定义错误管理吗?
答案 0 :(得分:2)
自定义错误页面:
编辑文件 conf / extra / httpd-multilang-errordoc.conf
更新包含 ErrorDocument 403 的行,你有3个不同的味道:
ErrorDocument 403 "What are you doing here ??"
ErrorDocument 403 "/error/myCustom403ErrorPage.html"
ErrorDocument 403 "http://en.wikipedia.org/wiki/HTTP_403"
注意: * .conf更新后,您必须重新启动Apache服务器
星号是一个保留字符,Apache使用它是出于这个原因:
“在具有多个用户的系统上,可以允许每个用户使用UserDir指令在其主目录中拥有一个网站”
您可以从Apache阅读本文档,了解实际使用的是什么星号:) Apache - Per-user web directories
<强>更新强>
如果你想将php脚本作为错误页面执行(你可以使用flavor 3)
ErrorDocument 403 "http://localhost/customWebAppError/error403.php"
<强>更新强>
ErrorDocument 403 /error/ERROR_403.html
答案 1 :(得分:1)
可能是因为它是一个保留字符。
http://www.w3.org/Addressing/URL/4_URI_Recommentations.html
星号(“*”,ASCII 2A hex)和感叹号(“!”,ASCII 21 hex)保留用于在特定方案中具有特殊重要性。
解释(简要......):
https://tools.ietf.org/html/rfc3986
关于角色的第2节已被重写以解释什么
保留字符,保留字符以及为什么是字符 保留,即使它们没有被通用的分隔符用作分隔符 句法。通常不安全解码的标记字符,
包括感叹号(“!”),星号(“*”),单引号
(“'”),打开和关闭括号(“(”和“)”)已被移动
保留集以澄清之间的区别 保留,毫无保留,希望能回答最常见的问题 方案设计者的问题。同样,关于
的部分 百分比编码的字符已被重写,URI规范化器为
现在获得解码任何百分比编码八位字节的许可
我已经使用mod_rewrite进行了测试,但仍然是403错误。但它似乎在查询字符串中起作用:?whatever*
答案 2 :(得分:0)
由于它在我的Windows上运行使用php和apache二进制文件以及自定义配置,因为它在我的linux服务器上以相同的方式工作,我应该假设它必须是默认XAMPP配置的问题。
你应该尝试禁用一些apache或php模块,这些模块可以避免正确的url ges。 (缓存,加速器......)
有关信息,我使用以下方法完成了测试:
RewriteEngine On
RewriteBase /
RewriteRule ^(.*) index.php?page=$1