搜索引擎在像somesite.com/index.php这样的URL上有问题吗?page=photos

搜索引擎在像somesite.com/index.php这样的URL上有问题吗?page=photos,php,seo,indexing,search-engine,Php,Seo,Indexing,Search Engine,我对php编码、web开发和搜索优化都是新手。在学习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=sto

我对php编码、web开发和搜索优化都是新手。在学习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中创建

我所关心的是,当涉及到搜索引擎、索引、seo等时,这种方法可能存在哪些缺点

我应该考虑的其他缺点或问题有哪些,也许我没有

提前谢谢

我不知道这是否是一种完全非正统的做法

使用查询字符串加载各种页面本质上没有什么“非正统”之处。数十亿使用这种方法的站点。搜索引擎可以对这些页面进行索引。
然而,

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

这是错误的概念。
使用index.php文件只加载页眉和页脚是没有意义的,这会使您的站点无法使用

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

  • 您假设header.php将在每次页面调用中被调用。那是错误的
  • 您假设header.php始终是静态的。那是错误的
  • 您忘记为页面本身创建模板
  • 每个人都必须牢记的主要规则:

    在所有数据准备就绪之前,不必向浏览器发送任何字符。

    为什么?

    • 今天是2012年。阿贾克斯时代。如果您的代码必须发送JSONed数据而不是整个HTML页面,该怎么办
    • 有一个东西叫做
      HTTP头
      。有时我们不得不送他们。如果已经发送了华丽的HTML头,那么就不可能了
    • 将显示逻辑与业务逻辑分离将允许您在许多站点上使用相同的php代码。您只需更改模板,而不必触摸引擎文件。这真是一大好处
    • 想象一下,您将根据页面内容为页面创建一个自定义的
      标记。这不是很平常的事吗?但是,如果不使用模板,就无法实现
    因此,您必须有一个包含页眉和页脚的通用站点模板,以及每个php脚本的专用模板。
    只有在完成所有业务逻辑时,才能调用这些模板,也就是说,您已经准备好了所有数据

    布局示例如下所示:

    .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";
    ?>
    
    <h2><?=$pagetitle?></h2>
    <ul>
    <? foreach($DATA as $row): ?>
    <li><a href="<?=$row['link']?>" target="_blank"><?=$row['name']?></a></li>
    <? endforeach ?>
    <ul>
    
    .3。最后,
    links.tpl.php
    是实际的页面模板:

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

    这样,您根本不需要包含索引

    您可以始终将web服务器配置为使用友好/干净的URL。我可能认为肮脏的URL会受到惩罚,因为它们很容易改变。这很有道理。。。我想我没有真正想清楚。RE:每个页面的自定义标题-它确实超出了这一范围,我应该假设标题、描述、关键字(我知道不再使用)都可以按页面进行更改,对吗?非常感谢您的洞察力和帮助,我将进行一番重新设计:)是的,这正是重点。请随意询问您是否有一些问题与此设置。我刚刚意识到一些其他的东西,现在我正在寻找这种方法。。。一种想法是将ajax用于nav,以便只重新加载核心内容,而不重新加载标题和nav。例如,导航按钮链接类似于href=“javascript:function('photos'),函数将使用load t0将photos.php的内容加载到div中。使用这种方法作为导航菜单有什么想法?好吧,我很高兴听到您的意见。