Ami*_*ole 59 routing http-status-code-404 laravel laravel-4 laravel-routing
我使用Composer安装了Laravel 4并设置了虚拟主机.目前,只有根路由正在工作:
<?php
Route::get('/', function()
{
return View::make('hello');
});
Run Code Online (Sandbox Code Playgroud)
这不是:
Route::get('/hello', function()
{
return View::make('hello');
});
Run Code Online (Sandbox Code Playgroud)
我试图打是TasksController
在/tasks
:
Route::resource('tasks', 'TasksController');
Run Code Online (Sandbox Code Playgroud)
这也给了我404错误.我能做错什么?我在项目的根目录下有一个默认的.htaccess文件:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我在Mac上使用localhost.
Gar*_*ryJ 103
只是为了笑,看看是否/index.php/hello
有效.
如果是这样,那么很可能是一个.htaccess
问题.
小智 39
在WAMP(Windows 8)上运行Laravel 4时遇到同样的问题.
对我有用的解决方案是:
打开apache httpd.conf并找到以下行:
#LoadModule rewrite_module modules/mod_rewrite.so
Run Code Online (Sandbox Code Playgroud)#
)httpd.conf
它应该工作!
小智 27
我有同样的问题,解决方案是在Apache2上启用重写mod
在终端中使用以下命令:
$ sudo a2enmod rewrite
$ sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
而魔术!
Orh*_*han 15
有完全相同的问题.
我需要做两件事来解决这个问题:
将AllowOverride从None 更改为All,例如(Apache 2.4.9):
选项索引FollowSymLinks MultiViews AllowOverride All要求全部授予
仅供参考:使用Laravel Homestead和VirtualBox以及Vagrant而不是WAMP.它包含Nginx而不是Apache,但默认情况下一切正常,因为它是为Laravel明确配置的.
小智 10
即使在启用mod_rewrite后,如果您对laravel/public文件夹设置别名,也可能会遇到此问题.
添加
RewriteBase /your_apache_alias
Run Code Online (Sandbox Code Playgroud)
到.htaccess就可以了.
对于UBUNTU用户 -已针对Ubuntu 18.04测试
1-启用mod重写
sudo a2enmod rewrite
Run Code Online (Sandbox Code Playgroud)
2-更改apache conf文件中的AllowOverride:
sudo nano /etc/apache2/apache2.conf
Run Code Online (Sandbox Code Playgroud)
在此块中将AllowOverride从None更改为All
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
3-重启Apache
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
在定义除home之外的任何内容时,您不需要/:
Route::get('hello', function()
{
return View::make('hello');
});
Run Code Online (Sandbox Code Playgroud)
应该管用.
就像@GaryJ 和@MartinGomez 所说的那样。这是.htaccess的内容,应该在 Apache 服务器上运行的所有 Laravel 4 项目的公共文件夹中设置:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
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]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我尝试了所有这些都没有成功,然后找到了另一个帖子,并将我的.htaccess更改为:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
56456 次 |
最近记录: |