2013-05-08 78 views
0

我有一个index.php页面应该链接到我的其他网站。为什么不是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> 

根据代码中的“家”的链接应该工作,但它说没有找到URL,因为它正在寻找在我在目录中的“家”,但它在我的网页目录。 “技能”也是一样。唯一能够工作的是通过联系链接项目,因为我指定了一个路径。但是,工作的链接不会通过我的索引页面,因为header.php(包含css),navigation.php和footer.php不包括在这里。

我做了研究,发现我必须用.htaccess文件和/或mod_rewrite做些什么。有人可以帮助我。我一直在寻找2-3周的时间,一无所有。

回答

1

你应该引用的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> 
+0

我可以更改我的.htacces文件,以便如果我把“家“它会自己做”index.php?page =“吗? – user2197126 2013-05-08 17:01:43

+0

是的,那是可能的。 – user20232359723568423357842364 2013-05-08 17:03:44

1

你的链接应该是:

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

我可以改变我的。htacces文件,这样如果我把“home”它会自己做“index.php?page =”吗? – user2197126 2013-05-08 17:02:27

0

它strectly在你的Web服务器处理请求的方式有关。 如果您尝试访问不受PHP管理的url,您将无法使用它。由deafult PHP只处理.php请求url(也是.php5和其他一些)。

解决方案可能是编写一个将/ home /转换为index.php?page = home的重写条件。假设你运行Apache Web服务器并启用了mod_rewrite并启用了htaccess。

所以,假如一定要规范你的链接是这样的:

<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,并把它放在/网页/文件夹:

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

要注意的是每个请求to/pages /将被重写,所以你应该仔细写下它们,避免重写.css .png等等......

这会影响你的请求:

  1. Apache将recive请求在/网页/文件名为home
  2. 重写规则将与正则表达式
  3. 力量跟Apache与参数页=家里的index.php来回答的规则检测到它(或无论正则表达式如何捕捉)

PS 也许你可能会感兴趣的标志P发送请求index.php作为代理服务器,但对于进一步的信息,你应该参考mod_rewrite文档(http://httpd.apache.org/docs/current/mod/mod_rewrite.html

相关问题