2015-09-08 65 views
0

即時通訊嘗試構建我的mvc框架,並且即時通訊遇到有關url的一些問題。php mvc網址操作

我已經設置我的.htaccess文件,我可以檢索URL並將其分解爲數組。

我的問題是,當我開始點擊我的網頁上的鏈接時,我的框架不斷將它們添加到網址,我結束了一個很長的網址,我的框架無法使用找到正確的控制器。

EX:

在我的網站的根目錄下的網址是:

本地主機/根

當我點擊一個鏈接,在第一時間,將URL更改爲:

localhost/root/controller/model/params

如果我點擊另一個鏈接,我的網址將是:

本地主機/根/控制器/模型/參數/控制器/模型/參數< - 這裏是我得到的問題,因爲網址沒有適當的框架來使用它。

我不知道問題是在.htacces還是在我的框架中。

Options -MultiViews 

RewriteEngine On 

Options -Indexes 

RewriteBase /root 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 

和我的主要PHP文件是:無論我在我的網頁我想要的網址總是被本地主機/根

我的.htaccess我希望能夠做的是:

class main { 

    protected $controller ="_default"; 
    protected $method ="_getDefaultView"; 
    protected $params; 

    public function __construct(){ 

     $url = $this->parseUrl(); 

     if(file_exists('app/controllers/'.$url[0].'.php')){ 
     $this->controller = $url[0]; 
     unset($url[0]); 
     } 

     require_once('app/controllers/'.$this->controller.'.php'); 
     $this->controller = new $this->controller; 

     if(method_exists($this->controller, $url[1])){ 
      $this->method = $url[1]; 
      unset($url[1]); 
     } 

     $this->params = $url ? array_values($url) : []; 
     call_user_func([$this->controller, $this->method], $this->params);  
    } 

    public function parseUrl(){ 
     if (isset($_GET['url'])){ 
      return $newUrl = explode('/', filter_var(rtrim ($_GET['url'], '/'), FILTER_SANITIZE_URL)); 
     } 
    } 
} 

幫助表示讚賞。 :-)

+1

這可能是因爲你正在構建您的網址的像''url當你點擊它,它變成'本地主機/根/控制器/模型/ PARAMS /控制器/模型/ params'嘗試'url' – maniteja

+0

如果我這樣做,我去本地主機/控制器/模型/參數不localhost /根/控制器/模型/參數 – user3838212

+0

@maniteja與你的消化我得到它的工作,所有我補充要做的是構建與/ root/controller/model/params鏈接。謝謝你的幫助。 – user3838212

回答

0

我的問題是由@maniteja回答,他建議去構造這樣

<a href="/controller/model/params">url</a> 

我所做的只是添加/根的鏈接。

信用是你的@maniteja