加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用Symfony2中的特定方案生成绝对URL

发布时间:2020-12-13 13:19:56 所属栏目:PHP教程 来源:网络整理
导读:我想在Symfony2控制器中生成具有特定方案(https)的绝对URL.我发现的所有解决方案都指向 configure the targeted route so that it requires that scheme.但我需要在http中保持可访问的路由,因此我无法将其设置为要求https(在这种情况下,http请求被重定向到相
我想在Symfony2控制器中生成具有特定方案(https)的绝对URL.我发现的所有解决方案都指向 configure the targeted route so that it requires that scheme.但我需要在http中保持可访问的路由,因此我无法将其设置为要求https(在这种情况下,http请求被重定向到相应的https URL).

有没有办法生成一个URL,在该URL生成的范围内,只有一个特定的方案?

我看到使用’network’关键字生成一个“网络路径”样式的URL,看起来像“//example.com/dir/file”;所以也许我可以干脆做

'https:' . $this->generateUrl($routeName,$parameters,'network')

但我不知道这对于任何路由或请求上下文是否足够健壮.

更新:在URL生成代码中进行调查之后,这种“网络路径”解决方法看起来非常强大.网络路径与绝对URL完全相同,没有“//”之前的方案.

根据代码或文档,目前您无法在generateUrl方法中执行此操作.所以你的“hackish”解决方案仍然是最好的,但正如@RaymondNijland评论你最好使用str_replace:
$url = str_replace('http:','https:',$this->generateUrl($routeName,$parameters));

如果要确保只替换一个匹配项,可以编写:

$url = str_replace('http:',$parameters),1);

如果你想确保它只在字符串的开头改变,你可以写:

$url = preg_replace('/^http:/',$parameters));

不,冒号(:)在正则表达式中没有特殊含义,所以你不必逃避它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读