2013-07-26 5 views
1

documentation에 이어 Silex는 코드에서 사용할 수 있도록 URL을 통해 "slugs"를 전달할 수 있습니다.Silex slugs가 404 페이지를 찾을 수 없음

다음 예제는 작동 :

$app = new Silex\Application(); 

$app->get('/{slug}', function ($slug) { 
    return 'HAI' . $slug; 
}); 

가 어떻게이 404을 수정할 수 있습니다

$app = new Silex\Application(); 

$app->get('/', function() { 
    return 'HAI'; 
}); 

그러나, 다음은 찾을 수 없음 404을 준다?

<VirtualHost 127.0.0.1:80> 
    DocumentRoot "/var/www/Silex/web" 
    DirectoryIndex index.php 

    <Directory "/var/www/Silex/web"> 
     AllowOverride All 
     Allow from All 
    </Directory> 
</VirtualHost> 

... 그리고 내 디렉토리 구조 :

경우 내 아파치 가상 호스트의 여기에 어떤 관련성의

/src 
    |-- bootstrap.php 
/tests 
/vendor 
/web 
    |-- index.php 

답변

3

그것은이 아파치 문제라고 밝혀졌습니다. .htaccess 파일 또는을 가상 호스트로 사용할 수 있다고 가정했습니다. 실제로 모두을 사용해야합니다.

htaccess로 :

FallbackResource /index.php 

참고 : Apache 2.2.16 or higher를 사용하는 경우에만 FallbackResource를 사용할 수 있습니다.

가상 호스트

<VirtualHost 127.0.0.1:80> 
    DocumentRoot "/var/www/Silex/web" 
    DirectoryIndex index.php 

    <Directory "/var/www/Silex/web"> 
     AllowOverride All 
     Allow from All 
    </Directory> 
</VirtualHost> 

대안은 가상 호스트 자체 내에서 .htaccess 파일의 내용합니다 (FallbackResource 지침)을 배치하고, htaccess로 제거합니다.

.htaccess를 추가하자마자 두 번째 예제의 슬러그가 작동했습니다.

+0

당신의 가상 호스트 설정에서'DirectoryIndex index.php'를 제거 할 수 있습니다. – cheesemacfly

+0

이 답변을 복사하고 그것을 발견 할 때 직접 추가하려면 무료로 기분을 상하게하십시오. & 대답 :) – Jimbo

+0

필요가 없습니다, 당신은 여기서 일을했습니다! :) – cheesemacfly

관련 문제