2016-04-18 3 views
0

Im Moment habe ich eine URL, die etwas entlang der Linien vondie URL

Portfolio/index.php? Page = home

Meine Seite sieht läuft den gesamten Code durch den Index mit einfachen PHP. Um es zum Laufen zu bringen, sieht meine index.php so aus.

<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> 

Dann ist mein Kopf Link tut dies, um richtig die Seiten zu laden:

<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> 

Gibt es trotzdem, dass ich mein PHP schreiben könnte, um eine schöner aussehende URL zurückzugeben?

Anstelle der index.php?

Irgendein Rat, um meinen Code aufzuräumen, würde sehr geschätzt werden, da ich sehr neu in PHP bin.

+2

Google oder "ziemlich Urls" "URL-Rewriting" –

+1

wie für die "bereinigen Sie meinen Code" -Anforderung, sollten Sie http://codereview.stackexchange.com/ –

+0

überprüfen. Sie müssen. Htaccess für das tun. Dies ist eine Grundvoraussetzung, so dass Sie es durch einfache Google-Suche finden können. – Manikiran

Antwort

1

Setzen Sie diesen Code in Ihre .htaccess richtig wher index.php

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

und nur für einen Test, in index.php, versuchen Sie dies,

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

zu tun und in Ihre 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> 

Dies muss entweder auf den drei, zu Hause, arbeiten oder get-in-touch führen,

hoffe das wird helfen.

+0

hmmm, ich habe das zu meinem .htaccess hinzugefügt. Die Verbindung im Moment rerwites zu etwas in der Art von "pages/work", also wo es "portfolio/pages/work" sein sollte, lässt es diesen Teil fallen. – factordog

+0

In diesem Fall müssen Sie einen Router erstellen – Fil

2

um nur mit PHP zu antworten, ohne die Module neu zu schreiben, reicht es vielleicht aus, die Indexseite einfach wegzulassen, den Seitennamen als Array-Index zu verwenden und zu prüfen, ob alles gesetzt ist noch eine ? in der 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"); 
?> 

und jetzt Ihre Kopf Links wie folgt aussehen:

<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> 
Verwandte Themen