前端 - 使用laravel进行开发时遇到的路由问题
大家讲道理
大家讲道理 2017-05-16 16:50:56
0
1
506

正在使用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进行重定向。

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
仅有的幸福

可以通过修改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已经没用了)

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!