2010-02-01 1 views
4

나는 데이터베이스에 오류를 기록해야하는 PHP 사이트에서 일하고있다.리디렉션 후 404'd 파일의 URL을 가져 오는 가장 좋은 방법은 무엇입니까?

 
ErrorDocument 404 /404.php 

404.php 데이터베이스에 로그를 삽입하는 데 필요한 로깅 기능이 모두 포함되어 다음과 같이 따라서, 나는 .htaccess 파일을 설정했습니다.

 
[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} 

어떤 제안 : 나는 여기에 404

는 $ _SERVER 자동 전역 배열의 내용이다 트리거 파일의 URL을 검색하는 문제가있어 무엇? 내가 읽은 모든 것은 HTTP_REFERER 항목을 권장하지만 존재하지 않는 것 같습니다.

미리 감사드립니다.

답변

4

REQUEST_URI은 요청 된 URL 경로와 쿼리를 포함합니다.

+0

나는 이것을 알고있다. 그러나 위에 표시된 것처럼 REQUEST_URI는 원래 요청이 아닌 404.php 경로를 반환합니다 (예 : nonexistentfile.php). .htaccess 파일에 추가 할 수있는 지시어가있어 클라이언트가 리디렉션되지 않도록 할 수 있습니까? – Warren

+0

정답입니다. ErrorDocument가 상대적인 파일 (절대 URL이 아닌 경우)이 아니면 REQUEST_URI에 리퍼러가 포함되지 않는 것으로 보입니다. 감사합니다. – Warren

+0

@Warren : 오류 문서로 절대 URL을 지정하면 서버는 404 대신 302 상태 코드 (리디렉션)로 응답합니다. – Gumbo

관련 문제