2011-05-01 6 views
0

난 다음 다시 쓰기 설정이 있습니다, 내가 원하는 것은 아닌 파일 및 디렉토리입니다한다 RewriteCond 혼란

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} !-f 
RewriteCond %{REQUEST_URI} !-d 
RewriteRule ^api/?.*$ api.php [NC,L] 

RewriteCond %{REQUEST_URI} !-f 
RewriteCond %{REQUEST_URI} !-d 
RewriteRule ^.*$ web.php [L] 

(자신의 라우팅을) api.php 또는 web.php에 의해 체포 할을하고, rest를 사용하여 파일 또는 디렉토리를 리턴하십시오. 그러나 기본 경로 '/'은 mod_rewrite에 의해 ''으로 인식되지 않습니다. 이는/루트 디렉토리이기 때문에 추측 할 수 없습니다.

디렉토리를 액세스 가능한 상태로 유지하면서 web.php로 이동하도록 수정하려면 어떻게해야합니까?

답변

0

구문 : RewriteBase URL 경로

URL 경로가 될 수 루트 상대 경로 또는 빈. 빈 URL 경로 값은 룰베이스가 웹 사이트 루트와 같음을 의미합니다.

1

먼저 규칙에서 REQUEST_URI를 REQUEST_FILENAME (으)로 변경하려고합니다. http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond

REQUEST_URI : 요청한 리소스가 HTTP 요청 줄입니다.

REQUEST_FILENAME : 전체 로컬 파일 또는 스크립트 요청에 일치하는 파일 시스템 경로입니다. 그래서 최종 결과가 될 것

RewriteCond %{REQUEST_URI}/
RewriteRule .* web.php [L] 

:

그런 다음 다른 규칙을 추가

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^api/?.*$ api.php [NC,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*)? web.php [NC,L] 

RewriteCond %{REQUEST_URI}/
RewriteRule .* web.php [L]