搜索引擎是否有问题,例如somesite.com/index.php?page=photos

时间:2012-04-04 15:01:01

标签: php seo indexing search-engine

我是PHP编码,网页开发和搜索优化的新手 - 所以新手整体而言。在学习php和web开发的过程中,我一直在尝试不同的网站架构和布局。我正在研究的一种方法使用如下方法:

我有一个index.php页面,它总是加载header.php,sidebar.php和footer.php。 index.php还包含一个开关,因此根据页面变量传递index.php,它会加载不同的核心内容。例如,一个examplesite.com/index.php?page=photos和examplesite.com/index.php?page=stories都有相同的页眉,页脚和侧栏,但是一个会有照片,一个会有故事主要内容。

<?php $page = $_GET['page'];?>

<?php include("header.php"); ?>
<?php include("nav.php"); ?>
<?php 
      switch ($page)
      {
      case 'play':
        include("photos.php");
        break;
      case 'cards':
        include("stories.php");
        break;
      default:
        include("frontpage.php");
      } 
      ?>
<?php include("footer.php"); ?>

我的导航由href =“index.php?page = ...”链接组成,因此选择索引页面上的菜单按钮实际上会调用自己将新内核传递给它。

我不知道这是否是一种完全非正统的方法,但这一切都开始了,因为我最初要创建一个wordpress主题,但后来中途决定不在wordpress中这样做。

我关注的是这种方法在搜索引擎,索引,搜索引擎等方面可能存在哪些缺点。

我应该考虑的其他缺点或问题可能是我不是吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

  

我不知道这是否是一种完全非正统的方式

使用查询字符串加载各种页面时,基本上没有“非正统”。数十亿的网站使用这种方法。搜索引擎可以将这些页面编入索引 尽管如此,

  

我有一个index.php页面,它总是加载header.php,sidebar.php和footer.php。

这是错误的概念 只有一个index.php文件加载页眉和页脚是没有意义的,并使您的网站明显无法使用。

以下是您设计中的主要缺陷:

  1. 您假设每次调用都会调用header.php。那是错的。
  2. 您假设header.php将始终是静态的。那是错的。
  3. 您忘了为页面本身创建模板。
  4. 每个人都必须学习的主要规则是:

    在所有数据准备就绪之前,不得将任何一个字符发送到浏览器中。

    为什么?

    • 今天是2012年。 AJAX时代。如果您的代码必须发送JSONed数据而不是整个HTML页面,该怎么办?
    • 有一个名为HTTP header的东西。有时我们必须发送它们。如果你已经发送了华丽的HTML标题,那就不可能了。
    • 将显示逻辑与业务逻辑分开将允许您在许多站点上使用相同的PHP代码。您只需更改模板,不要触摸引擎文件。这真的很有好处。
    • 想象一下,您将根据页面内容为您的网页制作自定义<title>标记。这不是很平常吗?但是如果不使用模板就无法实现。

    因此,您必须拥有一个包含页眉和页脚的常用网站模板,以及每个php脚本的专用模板 只有当所有业务逻辑完成时,这些模板必须被称为 - 即您已准备好所有数据。

    示例布局将如下所示:

    0.1。页面本身。

    它输出没有但只收集所需的数据,然后调用模板:

    <?
    //include our settings, connect to database etc.
    include dirname($_SERVER['DOCUMENT_ROOT']).'/cfg/settings.php';
    //getting required data
    $DATA=dbgetarr("SELECT * FROM links");
    $pagetitle = "Links to friend sites";
    //etc
    //and then call a template:
    $tpl = "links.tpl.php";
    include "template.php";
    ?>
    

    0.2。 template.php这是您的主要网站模板,

    由页眉和页脚组成:

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>My site. <?=$pagetitle?></title>
    </head>
    <body>
    <div id="page">
    <? include $tpl ?>
    </div>
    </body>
    </html>
    

    0.3。最后links.tpl.php是实际的页面模板:

    <h2><?=$pagetitle?></h2>
    <ul>
    <? foreach($DATA as $row): ?>
    <li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
    <? endforeach ?>
    <ul>
    

    这样你就不需要包含所有

    的索引