有关SSI指令如何工作的文档非常少!但我遵循非常简单的例子,似乎无法调整它们以达到我的目的而不会抛出错误。我想要做的是显示一个自定义的404,根据用户是否键入URL(无HTTP_REFERER)或者是否有其他地方的链接而不同。回到1990年代......如何让SSI停止投掷指令错误?
使用此:
<!--#echo var="HTTP_REFERER" -->
用假手动输入URI我得到这样的输出:
(none)
预期。所以我成立了这个小测试:
<!--#if var="HTTP_REFERER = (none)" -->
Yep
<!--#else -->
Nope
<!--#endif -->
我得到这个:
[an error occurred while processing this directive] Yep
我试过其他格式,我发现:
<!--#if expr="${HTTP_REFERER} = (none)" -->
<!--#if expr="$HTTP_REFERER = (none)" -->
和其他一些我不现在回想起来,但他们都产生了同样的事情......他们打印“是”,然后是错误。如果我删除括号“none”的括号,错误消失了,它正确地表示“nope”,但这并不真正有帮助,因为括号是字符串的一部分。这让我大吃一惊,也许这两个()中的一个或两个都必须逃脱,所以我尝试了所有的组合,并且我得到了错误或者测试失败。
我可以找到这个主题令人震惊的文档。我意识到这是古老的技术,但cPanel仍然使用它来定制错误页面。我只是想让我的错误页面更聪明一些。
或者,有没有更好的方法?