2014-04-18 119 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,'/'); }

相關問題