2017-05-31 154 views
0

首先,我想告訴你這是我的第一篇關於堆棧溢出的文章,所以如果我做錯了,我也想讓我知道它。從url隱藏子文件夾

我想構建一個包含控制器和模板文件夾的PHP腳本。兩者都重定向和包含 - 要求PHP文件在其中的一個或另一個。所有內容都可以通過根域目錄上的索引訪問。所以我的問題是我怎麼能隱藏的網址,即domain.com/"controller"/activate.phpdomain.com/"templates"/login.php

我讓你知道,我通過索引中的某些參數(if)在「模板」文件夾中包含login.php

我現在將發佈我的.htaccess,以便您可以查看該過程,而我已經嘗試過去隱藏「模板」文件夾。但是,然後通過在.htaccess上編碼,子目錄不再可用。這就是爲什麼我不得不刪除代碼在這裏發佈,因爲這些代碼不解決我的情況。

<IfModule mod_rewrite.c> 

    RewriteEngine on 
    RewriteBase/

    ErrorDocument 404 /templates/404 

    # To externally redirect /dir/abc.php to /dir/abc 
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC] 
    RewriteRule^/%1 [R=301,L,NE] 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}.php -f 
    RewriteRule ^(.+?)/?$ $1.php [QSA,NC,L] 


</IfModule> 

AddOutputFilterByType DEFLATE文本/文本的text/html文本/純文本/ XML文本/ CSS應用程序/ x-JavaScript應用/ JavaScript的

直到現在我的.htaccess有參數在url和cache-Gzip壓縮方法上隱藏.php擴展名。所有的幫助將感激,錯誤和正確的!

回答

0

所以如果我沒有錯,你有類似basepath/ControllerName/Method的東西,你想隱藏ControllerName部分? 在我看來,使用MVC與URL/friendlyurl玩,只是保持一個相對基本的htaccess像

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /smw/ 


# Allow any files or directories that exist to be displayed directly 
RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteCond %{REQUEST_FILENAME} !-d 

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

你可以做你想做一個簡單的「路由」的配置是什麼:

例如:

路由類來獲取URL和重定向

 public function __construct(){ 
    $uri = $_SERVER["REQUEST_URI"]; 
    $uri = preg_replace("#".BASE_PATH_PATTERN."#i", "", $uri, 1); 
    $this->uriExploded = explode("/", trim($uri, "/") ); 
    /*Check if there is another folder */ 
    $check = preg_match("/something/i", $uri); 
    if($check != false) 
    { 
     /*instruction... */ 
    } 

希望它是幫助!告訴我你是否需要更多信息

+0

這不完全是我的意思。爲了幫助你更多,我將給你提供文件夾的細節以及它的工作原理。所以: –

+0

根域目錄httpd主機: **資產**(包含js,css,img,文件夾內的文件夾) **控制器**(包含具有類,函數和db連接的php文件的文件夾他們) **語言**(包含php文件的文件夾,它檢查區域和決定哪個php文件讀取詞彙表數組) **模板**(包含php文件的文件夾,如登錄,激活等) **。htaccess **(包含您在上面看到的特定代碼的文件) ** index **(包含登錄php文件的php文件,位於模板文件夾內)' –

+0

假設我們有索引調用login.php和profil.php(如果語句正確)。因此,網址將首先顯示domain.com,然後如果該語句爲true,則會重定向到profil,url將在domain.com/templates/profil.php中更改。所以我在兩個方法的中間如何調用和正確顯示頁面: 1)使用.htaccess以某種方式照顧並隱藏子文件夾。 2)通過在控制器文件夾中使用帶有函數和類的php文件,在索引中顯示所有內容,如果語句正確並且url爲domain.com/something.php –