php - usar - laravel 5 solo funciona la ruta raíz
usar blade sin laravel (2)
Alterar el archivo .htaccess funcionaría en este escenario por documento oficial de laravel 5 como se muestra a continuación:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Soy nuevo en laravel. Estoy usando Ubuntu 15.04. Instalé Laravel Framework versión 5.1.7 (LTS) usando compositor y un servidor de lámpara usando el comando $ sudo apt-get install lamp-server^
(no instalé Homestead). Estoy usando PhpStorm 8.0.3
como IDE.
Creé tres rutas y un controlador. El archivo PagesController.php
ve así:
class PagesController extends Controller
{
public function index()
{
return ''Welcome to my homepage!'';
}
public function about()
{
return ''Learn a little about me.'';
}
public function hello()
{
return ''Hello World!'';
}
}
y el routes.php
ve así:
Route::get(''/'', ''PagesController@index'');
Route::get(''about'', ''PagesController@about'');
Route::get(''hello'', ''PagesController@hello'');
Cada vez que voy a http://localhost:63342/my-first-app/public/
(o http://localhost:63342/my-first-app/public/index.php
) funciona bien y me muestra la Welcome to my homepage!
mensaje. Pero cada vez que voy a http://localhost:63342/my-first-app/public/hello
o http://localhost:63342/my-first-app/public/about
, lo que obtengo es el mensaje 404 Not Found
.
Además, el archivo .htaccess
que se encuentra en my-first-app/public
ve así:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Lo que he intentado:
-
http://localhost:63342/my-first-app/public/index.php/hello
ohttp://localhost:63342/my-first-app/public/index.php/about
pero no funciona trabajo tampoco -
sudo a2enmod rewrite
comandosudo a2enmod rewrite
seguido desudo service apache2 restart
pero tampoco funciona. - Intenté
composer dump-autoload
pero tampoco funciona. Cambié
AllowOverride
deNone
aAll
enapache2.conf
. Ahora parte de esto se ve así:<Directory /> Options FollowSymLinks AllowOverride All Require all denied </Directory> <Directory /usr/share> AllowOverride All Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> <Directory /srv/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
pero tampoco resuelve el problema.
Actualización (15/07/2015):
El resultado de ejecutar php artisan route:list
ve así:
+--------+----------+-------+------+--------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------+------+--------------------------------------------+------------+
| | GET|HEAD | / | | App/Http/Controllers/PagesController@index | |
| | GET|HEAD | about | | App/Http/Controllers/PagesController@about | |
| | GET|HEAD | hello | | App/Http/Controllers/PagesController@hello | |
+--------+----------+-------+------+--------------------------------------------+------------+
He tenido este problema molesto por mucho tiempo. Pruebe el siguiente código en el archivo .htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::/2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^index/.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/index.php [L]
</IfModule>