我用的是laravel 4。
我有一个视图nest.blade.php
和相应的控制器NestController.php:
控制器内容:
class NestController extends BaseController {
public function showView()
{
return View::make('nest');
}
}
途径:
Route::get('/nest', 'NestController@showView');
当我转到url/nest时,它不起作用。当我转到url/index.php/nest时,它起作用。
显然,我只是希望它是/nest,而没有index.php。
我该如何解决这个问题?
我的htaccess:
IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
9条答案
按热度按时间dced5bon1#
漂亮URL
该框架附带了一个public/.htaccess文件,用于允许没有index.php的URL。如果您使用Apache为您的Laravel应用程序提供服务,请确保启用mod_rewrite模块。
如果Laravel附带的
.htaccess
文件在Apache安装中不起作用,请尝试以下操作:有关更多相关帮助,请查看this answer。
mrphzbgm2#
我在Apache HTTP服务器中启用了mod_rewrite模块,重新启动Apache服务并再次测试,它工作了!!!
下面是我用来启用mode_rewrite的代码;
1)在Apache/conf/httpd.conf中取消这一行的散列
加载模块重写_模块modules/mod_重写. so
2)为“sample-project”创建一个新配置,而不修改httpd.conf文件中的默认配置
hjqgdpho3#
注意!如果在启用重写模块后它仍然不工作。你需要在httpd. conf中将“AllowOverride None”改为“AllowOverride All”。
正如@The Alpha提醒的那样,Laravel不需要为此目的进行配置。
piwo6bdm4#
当你在
httpd.conf
中将AllowOverride None
改为AllowOverride All
时,请确保你在包含有效路径的<directory ...>
中进行了更改。示例
50few1ms5#
**由于某些原因,上面的答案对我不起作用,所以这是唯一对我起作用的答案。
我使用
ubuntu 18.04 amd64
作为开发服务器环境,因此修改了apache.conf
文件,位于/etc/apache2
从:
到:
还从:
到
之后,您需要在终端中使用
sudo service apapche2 restart
命令重新启动apache
现在,我可以在URL中不使用index.php访问页面
功劳归于:joshymatheww@Laracasts servers discussion channel on Aug 5, 2017
wpx232ag6#
登录终端
后线
并粘贴以下代码
Ctrl+O,然后Ctrl+M,然后Ctrl+x
现在重启apache服务器
r1zhe5dt7#
首先,你需要在
/etc/apache2/apache2.conf
中设置AllowOverride All
。找到以下块:然后你需要修改
/etc/apache2/mods-available/dir.conf
并移动index.php:↓ ↓↓↓这是很多人都忽略的重要部分↓ ↓↓↓
请勿忘记运行a2enmode
然后
这样你就可以将它应用到你所有的laravel项目中(在
/var/www/
文件夹中)。wpx232ag8#
在你的.htaccess中设置这个
hm2xizp99#
试试下面的. htaccess。我在服务器或本地主机环境中从来没有遇到过任何问题。
目录索引. php