很难解释,如果有人有更好的头衔,那就做我的客人..
基本上我创建了一个5页的网站。 的 的
的1) index.html
2) page.html
3) footer.html
4) menu.html
5) contact.html
的 为了访问页面,您必须在域的末尾键入页面名称(我敢打赌,您知道这一点......)
I wanted to access the pages with a code..
for example -> mywebsite.com\?page=contact
我该怎么做?
亲切的问候, KOBI。
答案 0 :(得分:1)
为什么不使用以下代码制作index.php
:
<?php
include($_GET['page'].'.html');
?>
结果将是:
mywebsite.com/?page=contact
会打开mywebsite.com/index.php?page=contact
,因为这是默认mywebsite.com/?page=contact
contact.html
并显示答案 1 :(得分:1)
只要您不指定任何Web服务器,您就需要配置任何Web服务器来查找名为index.php
的文件。自20世纪90年代初以来,这一直是所有Web服务器的标准功能。在Apache中,您将使用DirectoryIndex指令;这就是我的样子:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
然后,在这样的index.php
中编写PHP代码以充当路由器。您应该查看Variables From External Sources并了解$_GET
。
然而,这可能不是最好的布局。友情网址已存在多年:
http://example.com/contact
...它再次主要是一个Web服务器功能。在Apache中,您将使用mod_rewrite模块。这是一些PHP框架使用的示例规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
请求的路径可以从$_SERVER['REQUEST_URI']
解析出来。
一旦你把手放在index.php
文件中,就可以使用很多设计模式(现代框架经常使用第三方router和template engine)但如果你要从头开始学习,只想从静态HTML中快速完成某些事情,你可以使用switch语句的组合(创建路由白名单)和readfile()将每个文件注入到输出。 (请注意,PHP include构造系列将把文件作为PHP代码处理,这不是你想要的。)
<?php
define('INC_PATH', __DIR__ . '/../wherever/includes/are');
switch ($_GET['page']) {
case 'contact':
case 'help':
case 'whatever':
$page = $_GET['page'];
break;
default:
$page = 'error';
}
readfile(INC_PATH . '/index.html');
readfile(INC_PATH . '/page.html');
readfile(INC_PATH . '/footer.html');
readfile(INC_PATH . '/menu.html');
readfile(INC_PATH . "/$page.html");