簡體   English   中英

為什么index.php沒有工作?

[英]why isn't index.php working?

我有一個index.php頁面,應該鏈接到我的其他網站。

<?php 

    if(!isset($_GET['page']))$page = 'home.php';
        else{
            $page = $_GET['page'] . ".php";
        }

    include("_includes/header.php");

    include("_includes/navigation.php");

    include("_pages/$page");

    include("_includes/footer.php");
?>

這就是我的index.php的樣子。 它應該是我點擊的頁面(當我登錄導航時)並將其指向此頁面,以便標題,導航和頁腳將被重用於每個頁面。

<div id="navi">
    <ul>
        <li><a href="home">Home</a></li>
        <li><a href="skills.php">Skills</a></li>
        <li><a href="_pages/my_projects.php">Projects</a></li>
        <li><a href="_pages/experience">Experience</i></a></li>
        <li><a href="_pages/personal">About</a></li>
        <li><a href="_pages/contact">Contact</a></li>
    </ul>
</div>

根據代碼,“home”鏈接應該工作,但是它說找不到URL,因為它在我所在的目錄中尋找“home”。但是它在我的pages目錄中。 “技能”做同樣的事情。 唯一有效的是鏈接項目通過聯系,因為我指定了一個路徑。 但是,有效的鏈接不會通過我的索引頁面,因為這里不包含header.php(包含css),navigation.php和footer.php。

我做了研究,我發現我必須使用.htaccess文件和/或mod_rewrite。 有人可以請幫幫我。 我一直在尋找2-3周,什么都沒有。

你應該引用index.php,而不是家。

<div id="navi">
    <ul>
        <li><a href="index.php?page=home">Home</a></li>
        <li><a href="skills.php">Skills</a></li>
        <li><a href="_pages/my_projects.php">Projects</a></li>
        <li><a href="_pages/experience">Experience</i></a></li>
        <li><a href="_pages/personal">About</a></li>
        <li><a href="_pages/contact">Contact</a></li>
    </ul>
</div>

你的鏈接應該是:

<div id="navi">
    <ul>
        <li><a href="index.php?page=home">Home</a></li>
        <li><a href="index.php?page=skills">Skills</a></li>
        <li><a href="index.php?page=my_projects">Projects</a></li>
        <li><a href="index.php?page=experience">Experience</i></a></li>
        <li><a href="index.php?page=personal">About</a></li>
        <li><a href="index.php?page=contact">Contact</a></li>
    </ul>
</div>

它與您的Web服務器處理請求的方式密切相關。 如果您嘗試訪問不受PHP管理的網址,您將無法使用它。 通過deafult PHP只處理.php請求url(也.php5和其他一些)。

解決方案可能是寫一個重寫條件,將/ home /轉換為index.php?page = home。 假設您運行的是啟用了mod_rewrite並啟用了htaccess的Apache Web Server。

所以,假設以這種方式規范你的鏈接:

  <div id="navi">
      <ul>
            <li><a href="/pages/home">Home</a></li>
            <li><a href="/pages/skills">Skills</a></li>
            <li><a href="/pages/my_projects">Projects</a></li>
            <li><a href="/pages/page=experience">Experience</i></a></li>
            <li><a href="/pages/page=personal">About</a></li>
            <li><a href="/pages/page=contact">Contact</a></li>
      </ul>
  </div>

你可以像這樣寫一個.htaccess,把它放在/ pages /文件夾中:

   RewriteEngine On
   RewriteRule ^/pages/(.*)$ /index.php?page=$1 [QSA,L]

請注意每個對/ pages /的請求都會被重寫,所以你應該仔細編寫它們,避免重寫.css .png等等......

這會以這種方式影響您的請求:

  1. Apache將在/ pages / named home中重新獲取文件請求
  2. RewriteRule將使用regexp檢測它
  3. 該規則強制apache使用參數page = home(或正則表達式捕獲的任何內容)使用index.php回答

PS也許您可能對標志P感興趣,將請求發送到index.php作為代理,但是對於更多信息,您應該參考mod_rewrite docs( http://httpd.apache.org/docs/current/mod/mod_rewrite.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM