我尝试使用Laravel 5从HTTP请求中获取主机名,包括子域(例如dev.site.com
)。我在the docs中找不到任何相关内容,但我认为这应该很简单。有谁知道怎么做?
答案 0 :(得分:49)
Request
class)。如果您使用的是控制器方法,则可以注入具有getHttpHost
方法的请求对象。这提供了我正在寻找的东西:
public function anyMyRoute(Request $request) {
$host = $request->getHttpHost(); // returns dev.site.com
}
从代码中的任何其他位置,您仍然可以使用request
helper function访问请求对象,所以这看起来像:
$host = request()->getHttpHost(); // returns dev.site.com
如果您想要包含网址的http / https部分,则可以改为使用getSchemeAndHttpHost
方法:
$host = $request->getSchemeAndHttpHost(); // returns https://dev.site.com
我花了一些时间来寻找这个,所以我希望它有所帮助!
答案 1 :(得分:3)
有两种方法,所以要小心:
<?php
$host = request()->getHttpHost(); // With port if there is. Eg: mydomain.com:81
$host = request()->getHost(); // Only hostname Eg: mydomain.com
答案 2 :(得分:2)
request()->getSchemeAndHttpHost()
在刀片中的使用示例:
{{ request()->getSchemeAndHttpHost() }}
答案 3 :(得分:0)
您可以使用request()->url();
您也可以转储完整的request()->headers();
并查看该数据是否对您有用。