2011-08-01 4 views
2

는 다음의 .htaccess의 내용이다 : 기본적으로 나는 그들이 mod_rewrite없이 직접 액세스 될 것이다 그러나 나는 또한에 이르기까지, common라는 디렉토리에 dispatch.php을 가지고 내 모든 페이지 (PHP 파일) 배열이이 mod_rewrite 체계를 PHP에서 CGI/FCGI로 사용하려면 어떻게해야합니까?

Options -Indexes 
RewriteEngine On 
RewriteBase "/" 

# Disallow direct access to PHP files. 
RewriteRule ^(.*)\.php$ $1 [F,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(?<!common/dispatch\.php/)(.*)?$ common/dispatch.php/$1 [NS,L] 

하는 페이지 스크립트가 실행되기 전에 일부 처리를 할 수 있도록 모든 요청이 지시되기를 바랍니다.

기본적으로 페이지 구조가 최상위 수준이고 발송 스크립트가 자체 하위 디렉토리의 다른 비트 및 조각과 함께 방해되지 않도록하려는 경우를 제외하고는 대부분의 프레임 워크에서 사용하는 것과 같은 개념입니다.

이 스크립트는 (PHP를 mod_php으로 실행하는) 내 개발 컴퓨터에서 제대로 작동하지만 제작 컴퓨터에서 "입력 파일이 지정되지 않았습니다."라는 오류가 발생합니다. FCGI에서 실행중인 경우 정상적인 CGI에서는 대부분의 경우 작동하지만, 예를 들어 /foo/bar (슬래시가 누락 됨)으로 가고 /foo/bar은 docroot의 디렉토리 인 경우 /foo/bar/?/foo/bar으로 전송됩니다. 스크립트의 나머지 부분은 잘 작동하지만 나는 이처럼 엉망이 된 URI를 정말로 원하지 않으며 이상적으로 FCGI도 사용할 수 있기를 원합니다.

FCGI의 문제에 대한 해결책은 일치하는 $1을 검색어 문자열에 넣는 것 (즉, ? 이후)이지만 수정하지 못한 다른 종류의 이상한 행동이 원인입니다. 이것을 고칠 수있는 간단한 방법이 있습니까?

답변

0

그냥 PHP에서 auto_prepend_file 지시어를 사용하는 것이 더 쉬울까요?

관련 문제