Oui, il y a eu des questions similaires, mais les solutions proposées ne fonctionnent pas pour moi. J’ai donc mis en place Laravel, et l’installation fonctionne bien. Eh bien, tant que je rest sur la route de base
localhost/page/
dès que j’essaie de bash un de mes itinéraires, disons
localhost/page/subpage
et l’itinéraire est configuré pour renvoyer une vue
Route::get('subpage', ['as' => 'subpage', 'uses' => 'GenericPageController@subpage']);
La subpage
méthode dans le contrôleur:
public function subpage() { return view('base.subpage'); }
Je reçois simplement une réponse 404 du serveur chaque fois que j’essaie d’atteindre l’un des itinéraires. Peu importe quel contrôleur j’utilise, ou s’il renvoie une vue ou une fermeture.
AllowOverride
est défini sur All
mon .htaccess
dans le dossier page/public
ressemble à ceci:
Options -MultiViews RewriteEngine On RewriteBase / # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
Quelqu’un a une idée de ce que le problème pourrait être?
Le fichier .htaccess
ne sera pas chargé car il se trouve dans le répertoire public
, qui est vraiment destiné à être la racine de votre document. En tant que tel, vous devriez accéder à l’application en vous rendant sur localhost/page/public/subpage
.
Si vous souhaitez utiliser localhost/page/subpage
tout en conservant la structure de votre répertoire, vous devez append un nouveau fichier .htaccess
répertoire de la page
et supprimer le fichier .htaccess
du répertoire public
.
/page/.htaccess
:
Options -MultiViews RewriteEngine On RewriteBase /page/ # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Send requests to public directory... RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ public/index.php [L]
Malheureusement, en raison de la manière dont Laravel obtient les informations de demande, vous devrez regrouper vos itinéraires vers le répertoire de page
de votre configuration d’itinéraire:
Route::group(['prefix' => 'page'], function() { Route::get('subpage', ['as' => 'subpage', 'uses' => 'GenericPageController@subpage']); // Your other routes ... });
Essentiellement, et à mon avis, c’est la façon la plus simple de contourner ce problème. Vous pouvez également déplacer le contenu de votre répertoire public
d’un niveau et modifier les chemins en conséquence dans le fichier d’amorçage.