tod*_*day 13 php controller routes laravel-5
我是laravel的新手.我正在使用Ubuntu 15.04.我使用composer和一个使用$ sudo apt-get install lamp-server^命令的灯服务器安装了Laravel Framework版本5.1.7(LTS)(我没有安装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!';
}
}
Run Code Online (Sandbox Code Playgroud)
和routes.php看起来像这样:
Route::get('/', 'PagesController@index');
Route::get('about', 'PagesController@about');
Route::get('hello', 'PagesController@hello');
Run Code Online (Sandbox Code Playgroud)
每当我去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消息.
此外,.htaccess位于此处的文件my-first-app/public如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
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但它也不起作用.我改变AllowOverride从None到All在apache2.conf.现在它的一部分看起来像这样:
<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>
Run Code Online (Sandbox Code Playgroud)
但它也没有解决问题.
更新(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 | |
+--------+----------+-------+------+--------------------------------------------+------------+
Run Code Online (Sandbox Code Playgroud)
第 1 步:启用 mod_rewrite
须藤 a2enmod 重写
第 2 步:要激活这些更改,请重新启动 Apache2
须藤服务 apache2 重启
现在检查您的网页是否正常工作。如果没有,请按照第 3 步操作。
第 3 步:编辑 Apache 配置文件
要编辑运行以下命令:
须藤纳米/etc/apache2/sites-available/000-default.conf
然后在下面添加以下代码块 <VirtualHost *:80>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
保存文件并退出。
重启apache2:
须藤服务 apache2 重启
现在应该可以正常工作了。
小智 5
我一直很烦恼这个问题。打开.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>
Run Code Online (Sandbox Code Playgroud)
启用apache2重写模块:
sudo a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)
然后重新启动apache2服务器:
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
并确保AllowOverride All到您的apache2配置文件。
小智 2
根据 laravel 5 官方文档,在这种情况下更改 .htaccess 文件将起作用,如下所示:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6964 次 |
| 最近记录: |