Laravel slash après les redirections d'url à la racine du dossier
Je suis nouveau sur Laravel et il semble un grand cadre, mais j'ai une question quand il s'agit de routage. Je veux d'acheminer toutes les demandes pour une action de contrôleur nommé PageController@point de vue, mais lorsque le préfixe est admin, je veux qu'il voie à l'Admin\AdminController@vue. J'ai le code suivant:
Route::get('/{slug?}', 'PageController@view');
Route::group(array('prefix' => 'admin', 'namespace' => 'Admin', 'before' => 'auth'), function()
{
Route::get('/', 'DashboardController@main');
});
Mais quand je vais à l': /admin, Laravel la traite comme une limace au lieu d'un préfixe. Est-il somekind à l'exception de la fonction de la première ligne ou puis-je simplement avoir à passer les lignes ci-dessus, pour obtenir le bon résultat?
Nouveau problème:
Mais maintenant j'ai un nouveau problème quand je vais à http://www.mysite.com/laravel/public/admin/, Laravel me redirige vers http://www.mysite.com/admin/ au lieu de l'appeler AdminController@principal. Quand j'ai enlever le slash à la fin comme ceci: http://www.mysite.com/laravel/public/admin il fonctionne très bien.
OriginalL'auteur user1507868 | 2014-02-27
Vous devez vous connecter pour publier un commentaire.
Si vous spécifiez ces itinéraires dans l'ordre inverse, il doit travailler. À faire le plus de routes spécifiques de la première, et la plus générique, plus tard. Pensez-y comme un "fourre ceci, ceci et cela, et puis revenir à ce générique lorsque aucun match".
Votre nouveau problème réside dans le (mauvais, OMI) de redirection de la règle que Laravel 4.1 livré avec. Les règles très supposons que votre Laravel
public
répertoire se trouve sur le document root du serveur. Voici la règle:Comme vous pouvez le voir, c'est pour dire "si l'URL se termine par une barre oblique, juste rediriger vers /{url}", ainsi se débarrasser de la barre oblique. C'est bien beau tout ça, juste aussi longtemps que votre installation se trouve sur votre serveur racine du document.
Vous pouvez résoudre ce problème en spécifiant un
RewriteBase
(dans votre casRewriteBase /laravel/public
) au-dessus de la règle de votrepublic/.htaccess
fichier, mais bien sûr, ce sera maintenant le changement de l'environnement à l'environnement. C'est pourquoi je considère que l'évolution de Laravel 4.0RedirectIftrailingSlash
la fonctionnalité à un.htaccess
règle d'être une mauvaise idée.Alternativement, vous pouvez le retirer
RewriteRule
entièrement et essayez de ne pas s'inquiéter du fait que votre application va maintenant répondre sur les deux Url/laravel/public/admin
et/laravel/public/admin/
.Elle fonctionne. Merci!
mise à jour de ma réponse avec la réponse à la deuxième partie de votre question.
Oui, il fonctionne. Aussi, vider le cache avant de visiter les pages.
De répondre à la fois à des url est très mauvaise pratique pour le RÉFÉRENCEMENT comme sa voir comme un contenu en double.
OriginalL'auteur alexrussell
Vérifier si vous avez dossier "admin" dans votre public dossier. Laravel automatiquement redirige si il y en a un.
OriginalL'auteur Lazirro
Depuis l'ordre des questions, essayez cette
Problème de Redirection
Laravel redirections d'URL avec le slash de fin d'URL sans slash - le comportement par défaut. (Si vous entrez une URL sans slash -> pas de redirection nécessaire)
Réelle de la redirection n'est pas le problème. Le problème est, Laravel ne peut pas deviner droit "de base", URL et génère de mal URL de redirection pour vous.
Ouvrir
app/config/app.php
et définirurl
entrée pour correspondre à la racine de votre projet. Je suppose que c'esthttp://www.mysite.com/laravel/public
dans votre cas.Modifier à votre question, s'il vous plaît et post COMPLET de l'url que vous essayez d'ouvrir et COMPLET de l'url, vous êtes redirigé vers.
J'ai changé l'url de app/config/app.php mais Laravel encore me redirige vers le dossier racine.
j'ai le même problème si trouver toute solution que de laisser le moi savoir
OriginalL'auteur Andreyco
Suivantes RewriteRule fonctionne pour moi. J'ai dû enlever le /dans le /1$de alexrussel la réponse ci-dessus. Y compris le /me redirige vers le dossier racine.
Je suis à l'aide de laravel v4.2, apache v2.4.7, php v5.5.9 sur Linux Mint 17 64-bit.
OriginalL'auteur Sahil Ahuja
Si vous connaissez le nom de répertoire, de faire une règle. Cela fonctionne bien pour moi:
OriginalL'auteur user5023913