는 다음의 .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
을 검색어 문자열에 넣는 것 (즉, ?
이후)이지만 수정하지 못한 다른 종류의 이상한 행동이 원인입니다. 이것을 고칠 수있는 간단한 방법이 있습니까?