2013-07-26 1 views
1

Следуя documentation, Silex позволяет передавать «слизняки» через URL-адрес для использования в вашем коде.Silex slugs cause 404 страница не найдена

Ниже приведен пример:

$app = new Silex\Application(); 

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

Однако следующие дает 404 Not Found:

$app = new Silex\Application(); 

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

Как я могу исправить это 404?

В случае, если это какой-либо значимости, вот мой Apache ВХост:

<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

Оказывается, что это был вопрос Apache. Предполагалось, что вы можете использовать файл .htaccess, или vhost. Вам действительно нужно использовать как.

.htaccess:

FallbackResource /index.php 

Примечание: Вы можете использовать только FallbackResource при использовании Apache 2.2.16 or higher.

ВХост

<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 (The FallbackResource директивы) внутри самого виртуального хоста, и избавиться от HTAccess.

Как только я добавил .htaccess, пробка в моем втором примере работала.

+0

Удостоверьтесь, что вы можете удалить «DirectoryIndex index.php» из своей конфигурации vhost. – cheesemacfly

+0

Эй, @cheesemacfly, если вы хотите скопировать этот ответ и добавить его для себя, как вы его обнаружили, не стесняйтесь, и я дам вам возмещение & answer :) – Jimbo

+0

Не нужно, вы сделали эту работу здесь! :) – cheesemacfly

 Смежные вопросы

  • Нет связанных вопросов^_^