J'ai essayé de comprendre pourquoi cela se passe ces deux derniers jours sans succès. J'ai trouvé quelques autres questions traitant des erreurs 403 lors du routage dans Laravel mais aucune concernant un problème avec une seule route. Donc, quelque chose de nouveau à Laravel et le développement web, donc peut-être manquer quelque chose d'évident, mais voici:Route unique donnant une erreur 403 Forbidden in Laravel 4
Donc les routes dans mon projet fonctionnent toutes sauf une, cette route étant {mywebsite}/admin, ce qui me donne une erreur 403 . Il fonctionne lorsque je vais sur {mywebsite} /index.php/admin. Ce que je ne comprends pas, c'est pourquoi aucune de mes autres routes n'a le même problème. Par exemple, {mywebsite}/test works et {mywebsite}/admin/categories fonctionnent. C'est littéralement la seule route qui ne fonctionne pas. A noter également que le même problème se pose lorsque j'essaie d'y accéder à la fois sur mon serveur local et sur mon serveur de production (Digital Ocean avec Laravel Forge).
Voici mon fichier routes.php:
Route::get('/', function()
{
return View::make('hello'); //works
});
Route::get('/admin', function()
{
return "admin"; //403 error
});
Route::get('/test', function()
{
return "test"; //works
});
//these all work
Route::get('/admin/dashboard', '[email protected]');
// all category routes
Route::get('/admin/categories/', '[email protected]');
Route::get('/admin/categories/{id}/edit', '[email protected]');
Route::post('/admin/categories/{id}/edit/', array('uses' => '[email protected]'));
Route::post('/admin/categories/create/{id}', array('uses' => '[email protected]'));
Route::get('/admin/categories/delete/{id}', array('uses' => '[email protected]'));
Route::get('/admin/categories/create', function()
{
return View::make('CreateCategory');
});
// all form routes
Route::get('/admin/forms/{id}/edit', '[email protected]');
Route::post('/admin/forms/{id}', '[email protected]');
Route::post('/admin/forms/{id}/submit', '[email protected]');
Route::get('/admin/forms/{id}/add', '[email protected]');
Route::get('/admin/forms/{id}/edit/{elementId}', '[email protected]');
Route::get('/admin/forms/{id}/delete/{elementId}', '[email protected]');
Route::post('/admin/forms/{id}/saveUpdates/{tid}', '[email protected]');
//time table routes
Route::post('/admin/categories/{id}/timetable/{date}', array('uses' => '[email protected]'));
Route::get('/admin/categories/{id}/timetable', array('uses' => '[email protected]'));
Route::get('/admin/categories/{id}/timetable/{date}', array('uses' => '[email protected]'));
Et voici mon fichier .htaccess:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [L]
</IfModule>
Quelqu'un at-il la moindre idée pourquoi cela pourrait se produire?
Avez-vous un dossier appelé 'admin' dans votre dossier' app/public'? Si c'est le cas, vous voudrez supprimer ce dossier. La réécriture de l'url est probablement ignorée car le répertoire existe, et il tente d'afficher le répertoire 'app/public/admin' de la liste des répertoires, mais interdit de le faire. – Unnawut
@Unnawut Wow, oui. C'était le problème. Merci beaucoup! – Brian
Content de pouvoir aider. ;) Votre question me semble légitime. Je ne sais pas pourquoi il y a un downvote ici. Upvoted pour le neutraliser. – Unnawut