许多页面由单个PHP文件和许多PHP文件处理

时间:2014-01-22 12:12:57

标签: php indexing

我目前正在建立一个我希望将来推出的网站。我已经建立了很多,我认为有大约40页。如果您转到另一个链接,该网站目前的工作方式如下:

的index.php

点击指向会员的链接

/members.php

然而,我也可以在index.php中放置所有逻辑:

的index.php

点击指向会员的链接

/index.php?action=members

我的问题是,当单个条目scrypt提供多个页面时,这种方法的优点是什么?我会得到什么?是否值得重写我的网站?

1 个答案:

答案 0 :(得分:2)

我认为你的意思是提供静态内容与动态内容。

如果您使用带有查询字符串的网址,即http://domain.com/index.php?site=foo,开发人员通常会围绕动态内容构建静态框架。这意味着HTML标题,徽标,导航,页脚和其他东西都是静态的,他不需要在每个文件中保留这些信息。然后从不同的文件加载内容,这些文件只需要保留内容。

一个负面网站,或者至少很多人都这么认为,您的网址看起来不太好,人类和搜索蜘蛛的阅读效果也不是很好。在动态URL上施加静态URL的技术是使用mod_rewrite和.htaccess文件。您可以告诉Web服务器,您的URL中的某些位置等同于带有查询字符串的URL。例如,http://domain.com/list/相当于http://domain.com/index.php?site=list

动态内容很容易就像这里一样实现。您可以使用带有查询字符串的URL来触发动态内容加载,例如http://domain.com/index.php?site=list

<!doctype html>
<head>
<!-- html header -->
</head>
<body>
<div id="navigation>
<!-- your navigation -->
</div>
<div id="content">
<?php
switch($_GET['site'])
{
   case "list":
      // serve list content
      include("list.php");
      break;

   default:
      // server default content
      include("home.php");
      break;
}
?>
</div>
<div id="footer">
<!-- your footer -->
</div>
</body>
</html>

switch()函数支持$_GET['site']的值,并根据案例的匹配提供内容。

这里可以找到一个示例.htaccess文件,它使用不带尾随斜杠的URL :(你只需要确保mod_rewrite对你的Apache(a2enmod rewrite @ linux)或类似的web服务器是活动的。或者你也可以写进入你的vhost配置文件。)

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /

   RewriteCond %{REQUEST_URI} (.*)[/\?]$
      RewriteRule ^(.*)[/\?]$ $1 [L,R=301]

   RewriteCond %{REQUEST_URI} !(.*)/$
      RewriteRule ^([^\./]+)/([^\./]+)/([^\./]+)/([^\./]+)$ index.php?section=$1&sub=$2&sub2=$3&sub3=$4 [L]
      RewriteRule ^([^\./]+)/([^\./]+)/([^\./]+)$ index.php?section=$1&sub=$2&sub2=$3 [L]
      RewriteRule ^([^\./]+)/([^\./]+)$ index.php?section=$1&sub=$2 [L]
      RewriteRule ^([^\./]+)$ index.php?section=$1 [L]
</IfModule>