2016-09-13 20 views
1

访问这是非常难以解释,所以如果有人有那么一个更好的标题是我的客人..如何使网站的网页由代码

基本上我做了一个网站,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

尝试使用'。htaccess'文件重定向,因为你需要..见htaccess教程 – Sasikumar

+0

但据我所知,.htaccess最终显示您的网页名称,而不是代码,因为我想,你有一个教程/或什么确切的东西我看在htaccess ...是301吗? – Kobxxxx

+0

尝试在这里建议的方法https://simonecarletti.com/blog/2009/01/apache-query-string-redirects/ – Sasikumar

回答

1

为什么不作index.php与下面的代码:

<?php 
    include($_GET['page'].'.html'); 
?> 

结果将是:

  • 调用mywebsite.com/?page=contact将打开mywebsite.com/index.php?page=contact,因为这是默认
  • 的URL将保持mywebsite.com/?page=contact
  • 脚本加载文件contact.html并显示它
+0

当然首先确保GET参数在允许范围内,对吧? – walther

+0

当然:)你可以添加一个不错的回退/错误页面,如果没有 – Marcus

1

只需要配置任何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

但是,这可能不是最好的布局。友好的URL已经存在多年:

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文件中有很大量的设计模式,你可以使用(现代的框架通常使用第三方routertemplate 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");