2009-08-26 65 views
6

檢查了這個網站www.fltdata.com。出於某種原因,無論您訪問的是什麼頁面,而是指向主頁它指向當前頁面它工作在我的本地正常,但其在線行爲像這樣的家庭鏈接的href值只是:。$這個 - >的baseUrl()

哪些錯誤在這裏..

===編輯===

那麼我創建了一個幫手如下:

class Zend_View_Helper_BaseUrl 
{ 
    protected $_baseUrl; 

    function __construct() 
    { 
     $fc = Zend_Controller_Front::getInstance(); 
     $this->_baseUrl = $fc->getBaseUrl(); 
    } 

    function baseUrl() 
    { 
     return $this->_baseUrl; 
    } 
} 

這是我猜我什麼時候打電話給$ this-> baseUrl。這可能是這個問題 - 但它在我的本地主機上運行良好,而不是在線 - 所以 - 必須是某種配置問題 - 我應該在哪裏看?

回答

15

如果不知道關於ZF設置和e.h的更多細節,很難判斷出現了什麼問題。 url-rewriting-setup。 Zend_Controller_Request_Http::getBaseUrl()背後的邏輯 - 如果在前端控制器中沒有明確設置baseUrl,那麼您將調用Zend_View_Helper_BaseUrl::baseUrl() - 這是相當複雜的並且涉及4個不同的服務器變量(並且在確定當前請求URI的過程中還有一些更多) 。

解決此問題的最簡單方法可能是在引導程序中設置前端控制器上的baseUrl(相對於服務器根目錄)。如果您使用的是新Zend_Application -bootstrapping你只需要

resources.frontController.baseUrl = "/subdir" 

添加到您的配置。

編輯

你的幫手或多或少類似於原來baseUrl -helper隨ZF。原來的一個也代表Zend_Controller_Front::getBaseUrl()。你使用哪個版本的ZF?是否有理由不使用發貨baseUrl -helper?

您是否嘗試在明確引導中設置baseUrl

+0

即使世界上的Zend了很多,我完全不知道:( - 我貼我的助手功能 - 是什麼不對勁的地方 – Ali 2009-08-26 07:34:11

+0

其實我只是下面的教程和?網站還挺從建立 - 我不認爲我在任何地方都 – Ali 2009-08-26 08:30:47

+0

您是否嘗試過明確設置的baseUrl設置的baseUrl在我的引導文件有什麼結果 您是否嘗試過使用附帶的baseUrl輔助???什麼是結果 – 2009-08-26 08:45:33

6

我通常使用的結構對象爲基礎的URL,然後在公共/ index.php的

$config = new Zend_Config_Ini(
     APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV); 
    $baseUrl = $config->baseHttp; 
    define('BASE_URL', $baseUrl);` 

在下產生部分

的CONFIGS /的application.ini我有這在index.php 定義它
[production] 
baseHttp       = "http://whatever.net" 

這樣,如果我以往任何時候都需要使用不同的基本URL中的研究與開發我可以只添加了baseHttp一個diiferent可變我個人認爲,如果你想在baseURL時,不要讓費解它是一個比包裝更簡單的方法自己的班級。有時候OOP太多了OOP。此外,它會使安裝程序更易於管理。你甚至可以得到$ _SERVER變量來獲取主機名,並用http://

4
因爲你不使用尾隨斜線調用 $這個 - >的baseUrl()之後

Zend框架總是返回當前頁面;

要解決此問題追加尾隨斜線調用 $這個 - >的baseUrl後();在你看來像這樣:


正確的方式

<a href="<?php echo $this->baseUrl() . "/"; ?>">Home Link</a> 

<a href="<?php echo $this->baseUrl(); ?>/">Home Link</a> 

忽略的鏈接結尾的斜線結果頁面你」目前正在查看。

不正確的方法

<a href="<?php echo $this->baseUrl(); ?>">Home Link</a> 
相關問題