php - 文件夹中的 Laravel .htaccess 配置
问题描述
情况:这是文件夹结构的webproject。
- 万维网
- 2015
- 2016 年
- 2017
- 2018
- 当前的
每个文件夹代表当年的网站,在“当前”文件夹中,它是您访问 www.mydomain.com 时应该显示的网站。目标是,如果您访问 www.mydomain.com/2017,您会看到 2017 年的网站。
根文件夹中有一个 .htaccess 文件,可确保如果您导航到“/”,您将被重定向到当前文件。
我正在为必须放入“2017”文件夹(这是一个 laravel 应用程序)中的 .htaccess 文件而苦苦挣扎。
www 文件夹中的 .htaccess 文件
<IfModule mod_rewrite.c>
Options +SymLinksIfOwnerMatch
RewriteEngine on
RewriteRule ^(.*)$ current/$1 [L]
</IfModule>
2017 文件夹中的 .htaccess 文件
<IfModule mod_rewrite.c>
Options +SymLinksIfOwnerMatch
RewriteBase /2017
RewriteEngine on
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
当前结果:当我转到 www.mydomain.com/2017 时,我转到 2017 文件夹,但它转到 2017 年的“2017”页面。为了测试这一点,我刚刚在我的 web.php 路由中添加了这个:
Route::get('/{page}', array('as'=>'renderpage',function ($page) {
dd('I am here and the page you request is '.$page);
}));
结果是:“我在这里,您请求的页面是 2017 年”
长话短说:如何从 .htaccess 文件中的 url 中删除“2017”,以便 laravel 将 www.mydomain.com/2017 解释为 2017 文件夹的根目录。最好这应该在 2017 文件夹中的 .htaccess 文件中完成。
编辑:我将 2017 文件夹中的 .htaccess 文件更改为:
<IfModule mod_rewrite.c>
Options +SymLinksIfOwnerMatch
RewriteBase /2017
RewriteEngine on
RewriteRule ^(/.*|)$ public/$1 [L,NC,R=301]
</IfModule>
现在它可以工作了,除了你现在看到的网址 www.mydomain.com/2017/public 我如何从网址中删除“公共”?
解决方案
也许这是在 laravel 中正确的做法:
您可以使用更改控制器或路由中的根目录
$this->app->bind('path.public', function() {
return base_path().'/public_html';
});
我猜你可以在那里插入一个绝对路径。
查看
推荐阅读
- javascript - 反应原生视图自动高度
- python - Python json.decoder.JSONDecodeError:额外数据
- c++ - 剪辑剔除问题附近的pssm阴影贴图
- javascript - 图库网格未正确显示
- javascript - 是 res/req 关键字还是您可以随意命名它们?
- javascript - 如何在javascript中按值将数组拆分为设置大小的块?
- windows - Windows Server 2019 Docker docker.exe:来自守护程序的错误响应:无法启动服务实用程序 VM(createreadwrite):
- rest-assured-jsonpath - 如何从以下 JSON 中提取和显示首选项节点
- c# - uwp/wpf 中的叠加视图
- wordpress - 自定义创建账户