2014-04-18 75 views
-1

我使用URL::to调用来在外发邮件消息中嵌入链接。当我这样做时,我得到的是类似于:“baseroot/public/index.php/xxx/yyy”。url ::到(xxx/yyy)根据上下文返回不同的结果

然而,当我进行同样的呼叫时,例如在route呼叫中,我得到“baseroute/xxx/yyy”。

有什么想法?

回答

0

我有一个非常类似的问题URL::to('user/123')返回一个不正确的值,当访问主页与另一页。经过一番调查,在我的案件这是一个在请求的url区分大小写(!)的问题。我希望它与你的神秘案件有某种关系。

更多关于我的情况:URL:to('user/123')给了我不同的结果,我是否访问http://localhost/MyApp/public/someurlhttp://localhost/Myapp/public/someurl。在前者给出正确结果http://localhost/MyApp/public/user/123,而后者给出错误结果http://localhost/user/123

从这里,不太重要的笔记从我的调查,为未来的拉拉维考古学家。我希望我不是在说所有的废话。我是Laravel的新手,在Windows机器上使用本地Laravel 4安装+ WAMP。

  • UrlGeneratorto()方法使用$root = $this->getRootUrl($scheme);。后者使用$this->request->root();,其中请求是\Symfony\Component\HttpFoundation\Request
  • Request::root()确实默认为错误值,例如http://localhost访问someurl与不正确的情况下。
  • 罪魁祸首是Symfony\Component\HttpFoundation\Request(在vendor \ symfony \ http-foundation \ Symfony \ Component \ HttpFoundation \ Request.php中)。其getBaseUrl()调用prepareBaseUrl(),并且最终执行比较requestUri和baseUrl的实际逻辑。
  • 对于少数考古学家还在下面,在我的情况下$baseUrl是/MyApp/public/index.php而$requestUri是/ MYAPP /公/ someurl,这导致可悲的代码不能满足这个条件:

    if($ baseUrl & & false!== $ prefix = $ this-> getUrlencodedPrefix($ requestUri,dirname($ baseUrl))){ return rtrim($ prefix,'/'); }

相关问题