是的,有类似的问题,但建议的解决方案对我不起作用。 所以我设置了Laravel,安装工作正常。 好吧,只要我留在基线上
localhost/page/
一旦我试图点击我的一条路线,让我们说
localhost/page/subpage
并且路由配置为返回视图
Route::get('subpage', ['as' => 'subpage', 'uses' => 'GenericPageController@subpage']);
Controller中的方法subpage
:
public function subpage()
{
return view('base.subpage');
}
每当我尝试点击其中一条路线时,我只是从服务器得到404响应。无论我使用什么样的控制器,或者它返回一个视图还是一个闭包都没关系。
AllowOverride
上设置
到All
.htaccess
文件夹中的page/public
如下所示:
<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]
任何人都知道问题可能是什么?
答案 0 :(得分:3)
.htaccess
文件无法加载,因为它位于public
目录中,这实际上是您的文档根目录。因此,您应该访问localhost/page/public/subpage
。
如果要在保持目录结构不变的情况下使用localhost/page/subpage
,则需要将新的.htaccess
文件添加到page
目录,然后删除 .htaccess
目录中的public
文件。
/page/.htaccess
内容:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase /page/
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Send requests to public directory...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ public/index.php [L]
</IfModule>
不幸的是,由于Laravel获取请求信息的方式,您需要将路由分组到路由配置中的page
目录:
Route::group(['prefix' => 'page'], function()
{
Route::get('subpage', ['as' => 'subpage', 'uses' => 'GenericPageController@subpage']);
// Your other routes ...
});
基本上,在我看来,这是解决这个问题的最简单方法。您还可以将public
目录的内容上移一级,并在引导程序文件中相应地更改路径。