2011-10-05 4 views
1

대부분은 기본적으로 설정된 WAMP 서버를 사용하고 있습니다. mod_rewrite가 로컬에서 예상대로 작동하도록하는 데 문제가 있습니다 (프로덕션 서버에서 모든 것이 잘 작동합니다). 일반적으로 호출이 파일은 다음과 루트에 내가 .htaccess 파일을 /index.php아파치/mod_rewrite가 경로를 동일한 이름의 파일로 취급하지 못하도록하는 방법

에 의해로드 된 부트 스트랩 파일을 통해입니다 /ajax/graphs/get-graph.php

방법 :

나는에 위치한 PHP 파일이 규칙 :

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php [L] 

그래서, 기본적으로, AJAX를 통해 내 응용 프로그램 요청이 /ajax/graphs/get-graph/에 대한 호출은이에 문의해야하는 경우.

문제는 Apache/mod_rewrite가 요청 경로를보고 /ajax/graphs/get-graph.php을 직접로드한다는 것입니다.

동일한 이름의 PHP 파일이 해당 위치에 존재하기 때문에 Apache가 /ajax/graphs/get-graph/이 유효한 파일이라고 가정하지 못하게하려면 어떻게해야합니까?

답변

3

the Apache documentation에 설명 된대로 MultiViews이라는 옵션이 있습니다.이 옵션을 사용하면 기본적으로 존재하지 않는 디렉토리 이름이 해당 파일 이름으로 변환됩니다.

MultiViews를 사용하면 다음과 같은 효과는 다음과 같습니다 /some/dir은 MultiViews를 활성화 있으며, /some/dir/foo이 존재하지 않는 경우 서버가 /some/dir/foo에 대한 요청을 수신하는 경우, 서버가 foo.*라는 이름의 파일을 찾는 디렉토리를 읽고, 효과적으로 가짜 어떤 이름을 모든 파일 유형지도 ... 최대

목적은 당신이

/some/dir 
- foo.en.gif 
- foo.en.png 
- foo.en.jpg 
- foo.fr.gif 
- foo.fr.png 
- foo.fr.jpg 
과 같은 다른 형식 또는 언어 파일의 여러 버전을 가질 수 있다는 것입니다

이고 Apache는 브라우저에서 제공하는 환경 설정에 따라 최상의 것을 선택합니다. 그것을 해결하기 위해

, 당신이해야합니다 모든 /ajax/graphs에 해당하는 <Directory> 또는 <Location> 블록에서 지시

Options -MultiViews 

를 추가합니다. 또는 기본 서버 구성에 액세스 할 수없는 경우 /ajax/graphs/.htaccess에 넣을 수 있습니다.

+0

챔피언처럼 일했습니다! 감사! –

+0

고맙습니다. 2-3 시간의 신비를 풀어 줘서 고맙습니다. –

관련 문제