2013-01-03 49 views
1

我怀疑这是无法完成的,但无论如何这里都是这样。有没有办法,在静态网站上显示当您使用Apache指令ErrorDocument将404找不到文件错误重定向到自定义页面时用户尝试访问的URL?举例来说,如果你尝试:Apache ErrorDocument:显示404 URL

http://www.fredriley.org.uk/dingbat/arsebiscuits 

默认的404错误说:

The requested URL /dingbat/arsebiscuits was not found on this server. 

所以URL必须在一个环境变量。我可以在一个自定义的错误文档中得到这个吗?我想告诉用户URL,而不仅仅是给他们一个通用的错误文档。我知道我可以在PHP中轻松完成此操作,但该网站仅包含静态HTML文档。

+0

拥有一个静态网站并不妨碍您有一个动态的错误页面。您的托管服务是否提供某种服务器端技术? –

+1

谢谢,阿尔瓦罗。 PHP在托管服务(Titan)上很好,所以我想我可以为404编写一个PHP脚本。可能REQUEST_URI(http://php.net/manual/en/reserved.variables.server.php)是除非你能提出更好的方法,否则要使用最好的环境变量? 虽然该网站(http://www.fredriley.org.uk/callhull)主要由静态文档组成,但我在表单上使用了几个PHP脚本,因此编写另一个表单时不会太大。不过,我很好奇,如果有一种方法可以访问静态HTML文档中的env变量。 –

+0

静态意味着:静态;-)我已经为剩下的写了一个正确的答案。 –

回答

1

拥有一个静态站点并不能阻止您出现动态错误页面。您可以使用您的托管服务提供的任何服务器端技术。

如果你可以使用PHP,你可以简单地选择一个静态模板,它的扩展名更改为*.php并加少许动态片段:

<p><?php echo htmlspecialchars($_SERVER['REQUEST_URI']); ?></p> 

如果你可以使用SSI,这是非常相似:

<p><!--#echo var="REQUEST_URI" --></span></p> 

REQUEST_URI变量包含由用户键入的URL的本地部分(散列除外)。这是一个不错的选择。

+0

谢谢。我完全忘记了SSI,现在这种情况相对比较少见,而且很多主机都不支持。 –