2010-02-01 58 views
4

我正在使用一个需要将错误记录到数据库的PHP站点。因此,我给自己定了一个.htaccess文件如下:重定向后获取404'd文件的URL的最佳方式是什么?

 
ErrorDocument 404 /404.php 

404.php包含了所有的必要的记录功能的日志插入到数据库。什么我在与被检索触发404

这里是$ _SERVER超全局数组的内容的文件的URL问题:

 
[HTTP_HOST] => {omitted} 
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
[HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5 
[HTTP_ACCEPT_ENCODING] => gzip,deflate 
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7 
[HTTP_KEEP_ALIVE] => 300 
[HTTP_CONNECTION] => keep-alive 
[PATH] => /usr/local/bin:/usr/bin:/bin 
[SERVER_SIGNATURE] => 
[SERVER_SOFTWARE] => Apache/2.2.8 (Ubuntu) 
[SERVER_NAME] => {omitted} 
[SERVER_ADDR] => {omitted} 
[SERVER_PORT] => 80 
[REMOTE_ADDR] => {omitted} 
[DOCUMENT_ROOT] => {omitted} 
[SERVER_ADMIN] => [no address given] 
[SCRIPT_FILENAME] => /404.php 
[REMOTE_PORT] => 19274 
[GATEWAY_INTERFACE] => CGI/1.1 
[SERVER_PROTOCOL] => HTTP/1.1 
[REQUEST_METHOD] => GET 
[QUERY_STRING] => 
[REQUEST_URI] => /404.php 
[SCRIPT_NAME] => /404.php 
[PHP_SELF] => /404.php 
[REQUEST_TIME] => {omitted} 

有什么建议?我读过的所有内容都推荐使用HTTP_REFERER项目,但似乎并不存在。

在此先感谢。

回答

4

REQUEST_URI旨在包含请求的URL路径和查询。

+0

我意识到这一点。但是,如上所示,REQUEST_URI返回404.php路径而不是原始请求(例如nonexistentfile.php)。是否有可能添加到.htaccess文件中的指令可以防止客户端被重定向? – Warren 2010-02-01 22:36:42

+0

这是正确的答案。看起来REQUEST_URI将不包含引用链接,除非ErrorDocument是一个相对文件(没有绝对URL)。 谢谢! – Warren 2010-02-01 22:42:56

+0

@Warren:如果指定绝对URL作为错误文档,服务器将以302状态码(重定向)而不是404响应。 – Gumbo 2010-02-01 22:49:14

相关问题