【发布时间】:2015-10-04 18:45:51
【问题描述】:
我是 laravel 的新手。我正在使用 Ubuntu 15.04。我使用 composer 安装了 Laravel Framework 版本 5.1.7 (LTS),并使用 $ sudo apt-get install lamp-server^ 命令安装了一个灯服务器(我没有安装 Homestead)。我正在使用 PhpStorm 8.0.3 作为 IDE。
我创建了三个路由和一个控制器。 PagesController.php 文件如下所示:
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!';
}
}
routes.php 看起来像这样:
Route::get('/', 'PagesController@index');
Route::get('about', 'PagesController@about');
Route::get('hello', 'PagesController@hello');
每当我转到http://localhost:63342/my-first-app/public/(或http://localhost:63342/my-first-app/public/index.php)时,它都能正常工作并向我显示Welcome to my homepage! 消息。但是每当我去http://localhost:63342/my-first-app/public/hello或http://localhost:63342/my-first-app/public/about时,我得到的是404 Not Found消息。
另外,位于my-first-app/public 的.htaccess 文件看起来像这样:
<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>
我尝试过的:
- 我尝试了
http://localhost:63342/my-first-app/public/index.php/hello或http://localhost:63342/my-first-app/public/index.php/about,但也没有用。 - 我输入了命令
sudo a2enmod rewrite,然后输入了sudo service apache2 restart,但它也不起作用。 - 我试过
composer dump-autoload,但也没用。 -
我在
apache2.conf中将AllowOverride从None更改为All。现在它的一部分看起来像这样:<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>但它也不能解决问题。
更新(2015 年 7 月 15 日):
运行php artisan route:list的结果如下:
+--------+----------+-------+------+--------------------------------------------+------------+
| 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 | |
+--------+----------+-------+------+--------------------------------------------+------------+
【问题讨论】:
-
运行“php artisan route:list”并粘贴输出。您应该在那里看到所有已定义的路线。
-
@jedrzej.kurylo 感谢您的回复。我在问题的末尾添加了结果。
-
你能添加 dd('test');在索引文件的顶部,转到“localhost:63342/my-first-app/public/index.php/about”,看看是否会输出测试?这样我们就可以知道是重写还是 Laravel 代码
-
@jedrzej.kurylo 我在
index.php文件的顶部添加了dd('test');。现在,当我转到http://localhost:63342/my-first-app/public/index.php时,它会显示一个空白页面,而当我转到http://localhost:63342/my-first-app/public/index.php/about时,它会给我同样的404 Not Found消息。 -
您能否在您的控制台中运行
php artisan serve --port 8000 --host 127.0.0.1(可能是终端,因为您在Linux 中)然后导航到http://localhost:8000/about并告诉我们会发生什么?另外,请记住您可能必须在您的 lampp 上启动您的 apache 服务器。
标签: php controller routes laravel-5