2016-04-18 37 views
0

我現在有一個網址,看起來沿清理URL

組合/的index.php?頁的東西線=家庭

我的網站上運行的所有代碼,通過使用簡單的PHP的指數。爲了得到它的工作,我的index.php看起來像這樣。

<div id="wrapper"> 
    <?php 
     // INCLUDING HEADER ON ALL PAGES 
     include("pages/header.php"); 
    ?> 

    <main> <!-- MAIN TAG !--> 
    <?php 
     $pageLoaded = array('home', 'header' , 'get-in-touch' , 'work' , 'main'); // LIST ALL PAGES 

     $page = (isset($_GET['page'])) ? $_GET['page'] : 'home'; 

     if (in_array($page, $pageLoaded)){ 
      include("pages/$page.php"); 
     } 

     else { 
      include("pages/404.php"); 
     } 
    ?> 
    </main> 

    <?php 
     // INCLUDING FOOTER ON ALL PAGES 
     include("pages/footer.php"); 
    ?> 
</div> 

然後我的標題鏈接做到這一點,以便正確地加載網頁:

<ul class="links"> 
    <li><a href="index.php?page=home">HOME</a></li> 
    <li><a href="index.php?page=work">WORK</a></li> 
    <li><a href="index.php?page=get-in-touch">ABOUT</a></li> 
</ul> 

無論如何,我可以寫我的PHP返回一個更好看的URL?

而不是index.php?

任何意見,以清理我的代碼將不勝感激,因爲我是PHP的新手。

+2

谷歌 「URL重寫」 或 「漂亮網址」 –

+1

至於「清理我的代碼」請求,你應該檢查出http://codereview.stackexchange.com/ –

+0

你需要使用.htaccess來做到這一點。這是一個基本要求,所以你可以通過簡單的谷歌搜索找到它。 – Manikiran

回答

1

將這個代碼在你的.htaccess右wher您的index.php位於

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?page=$1 [L] 

,只是一個測試,在index.php中,儘量要做到這一點,

<?php 
    $page = (isset($_GET['page'])) ? $_GET['page'] : 'home'; 
    echo $page; 
?> 

和您的page.php文件

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title></title> 
    </head> 
    <body> 
    <ul class="links"> 
    <li><a href="http://localhost/test/home">HOME</a></li> 
    <li><a href="http://localhost/test/work">WORK</a></li> 
    <li><a href="http://localhost/test/get-in-touch">ABOUT</a></li> 
    </ul> 
    </body> 
</html> 

這必然導致,無論是在三,家庭,工作,或獲得式觸摸

希望這會有所幫助。

+0

嗯,我將它添加到我的.htaccess中。目前的鏈接只是沿着「頁面/工作」的方向重新出現,所以它應該是「組合/頁面/工作」,這會導致部分內容的丟失。 – factordog

+0

這種情況下,你必須創建一個路由器 – Fil

2

要回答只使用PHP而不重寫模塊,您可能已經足夠簡單地忽略索引頁面,使用頁面名稱作爲數組索引,並檢查它是否設置完畢,但您會還有?在URL:

<div id="wrapper"> 
<?php 
    // INCLUDING HEADER ON ALL PAGES 
    include("pages/header.php"); 
?> 

<main> <!-- MAIN TAG !--> 
<?php 
    $pageLoaded = array('home', 'header' , 'get-in-touch' , 'work' , 'main'); // LIST ALL PAGES 

    $get_keys = array_keys($_GET); // find all the pages in url, in case of multiple 
    $matches = array_intersect($pageLoaded,$get_keys); // find matches 

    if(!empty($matches)) $page = $matches[0]; 
    else $page = 'home'; 

    if (in_array($page, $pageLoaded)){ // now redundant, may want to play with other ways of serving 404 
     include("pages/$page.php"); 
    } 

    else { 
     include("pages/404.php"); 
    } 
?> 
</main> 

<?php 
    // INCLUDING FOOTER ON ALL PAGES 
    include("pages/footer.php"); 
?> 

,現在你的頭鏈接可以是這樣的:

<ul class="links"> 
    <li><a href="?home">HOME</a></li> 
    <li><a href="?work">WORK</a></li> 
    <li><a href="?get-in-touch">ABOUT</a></li> 
</ul>