我目前正在建立一个我希望将来推出的网站。我已经建立了很多,我认为有大约40页。如果您转到另一个链接,该网站目前的工作方式如下:
的index.php
点击指向会员的链接
/members.php
然而,我也可以在index.php中放置所有逻辑:
的index.php
点击指向会员的链接
/index.php?action=members
我的问题是,当单个条目scrypt提供多个页面时,这种方法的优点是什么?我会得到什么?是否值得重写我的网站?
答案 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>