2009-05-22 3 views
0

mod_rewrite 규칙을 통해 다시 작성된 파일 (앱과 동일한 서버에서 호스팅 됨)에 대한 URL 만 있다고 가정합니다.PHP에서 rewrited (mod_rewrite) 파일 읽기

.htaccess 파일 또는 원래 URL을 작성하는 데 사용 된 다시 쓰기 규칙에 직접 액세스하지 않고 PHP로 해당 파일의 내용을 어떻게 읽으시겠습니까?

"src"속성이 설정된 모든 스크립트 태그를 추출하고 대상 파일의 내용을 검색 한 다음 모든 내용을 하나의 큰 javascript 파일로 병합하여 축소하고 대신 제공합니다.

문제는 file_get_contents를 통해 모든 파일을 읽는 것이 페이지 속도를 줄이는 것으로 보입니다. 그래서 대안을 찾고 있었고 다른 요청을 생성하지 않고도 파일 시스템에서 직접 파일을 읽을 수 있다면 문제가 될 수 있습니다. 백그라운드에서이 작업을 수행하려면 파일 경로를 찾아야하고 일부는 다시 작성된 URL을 통해 액세스해야합니다.

+0

좀 더 자세하게 설명해주십시오. RewriteRules는 어떻게 생겼습니까? fileA에서 fileB로 다시 작성하고 fileA의 내용을 읽을 수 있으려면 scriptC가 필요합니까? – duckyflip

+0

모든 요청시 파일 내용을 생성하는 대신 캐시를 사용하십시오. – Gumbo

+0

이것은 캐시이며 모든 요청에 ​​대해 생성되지는 않습니다. –

답변

1

PHP를 원래 PHP처럼 포함 할 수 없으며 PHP 실행 자체는 get the results입니다.

fopen 래퍼가 켜져있는 경우 다시 작성한 URL에 require, include 또는 file_get_contents을 사용하는 것만 큼 쉽습니다. 그렇지 않으면 fsockopencurl이 결과로 HTTP 요청을 작성하는 옵션으로 사용됩니다.

0

요청을 처리하는 방법을 말할 수 없으므로 유일한 해결책은 해당 서버에 HTTP 요청을 보내는 것입니다. 하지만 그 파일/스크립트의 출력 만 얻을 것입니다.

+0

질문은 "PHP로 그 파일의 내용을 어떻게 읽겠습니까?"입니다. 이 방법은 소스 파일의 내용을 제공하지 않습니다. 이것은 서버 측에서 처리 된 무언가의 반환이 정확히 무엇인지를 알지 못하게합니다 ... – Jet

+0

정확한 규칙을 모른 채로는 방법이 없습니다. 규칙을 사용하더라도 내부 리다이렉트, 컨텍스트 파일 시스템 조회 등과 같은 mod_rewrite의 모든 기능을 다루기 위해서는 호환 가능한 mod_rewrite 에뮬레이터가 필요할 것입니다. – Gumbo

+0

그게 내 뜻입니다. 유일한 정답은 PHP 쪽에서 다시 쓰기 규칙을 구현하는 것입니다. – Jet

0

PHP는 아파치 뒤에 놓이며 fopen-like 또는 include-like 등의 함수를 사용하여 파일 시스템 수준에서 파일에 액세스합니다. 이러한 함수는 OS 파일 액세스 루틴을 사용하지만 아파치는 사용하지 않으므로 재 작성 모듈은이 액세스에 대해 작동하지 않습니다.

apache-rewriting 및 PHP 파일 액세스가 서로에 대해 잘 모르고 다른 레이어에 있기 때문에이를 수행 할 방법은 없지만 PHP 스크립트에서 .htaccess와 동일한 URL 재 작성 규칙을 구현합니다. 웹 응용 프로그램

편집 후 : 유일한 방법은 - imlement PHP 스크립트에서 규칙을 다시 작성하고 php (모듈 다시 쓰지 않음)를 통해 URL을 구문 분석 한 후 파일 시스템 PHP 액세스를 사용하는 것입니다.