首页  >  问答  >  正文

前端 - 使用laravel进行开发时遇到的路由问题

正在使用laravel进行开发,项目中的静态资源目录与路由会出现同名,比如:

//web的静态资源路径
/public/web/xxx     

//定义的路由
Route::group(['prefix' => 'web'], function () {
    Route::get('/', 'XxxController@indexPage');
});

如果这样配置的话,在开发环境使用php内置服务器访问 localhost:8000/web 会出现404错误:

The requested resource /web_dealer was not found on this server.

研究了一下,应该是因为public目录下有同名的资源路径,所以服务器没走路由,直接当静态资源进行处理。但实际上这个web只是一个文件夹,所以才会出现上面的404。

使用apche服务器进行测试,apache似乎会把localhost:8000/web重定向(301)到localhost:8000/web/,页面上会暴露目录结构。设置options -Indexes来只是禁止展现,依旧会对localhost:8000/web进行重定向。

想知道,如果想将静态资源路径和路由命名如上所示进行统一,应该怎么去配置。或者说有没有其他更好的命名方案。

大家讲道理大家讲道理2683 天前507

全部回复(1)我来回复

  • 仅有的幸福

    仅有的幸福2017-05-16 16:52:56

    可以通过修改public/.htaccess来实现(Linux Mint下LAMP本地测试通过)

    步骤
    修改public目录下的.htaccess文件

    定位到:

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    原本意思是:如果不是目录!-d、也不是文件!-f,那么解析到index.php

    修改为

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    RewriteCond %{REQUEST_FILENAME} !-d

    现在表示:如果不是文件!-f,那么解析到index.php
    (从某种意义上!-d已经没用了)

    本地测试通过,是否会带来其他问题暂时未知。

    回复
    0
  • 取消回复