仅显示网站的顶级

时间:2011-07-18 10:08:23

标签: php html apache

我有一个网站,可以在http://example.com下访问。 为此,我有几个PHP脚本,如index.php,intro.php,faq.php,contact.php等。 所以一个典型的用例看起来像这样: 用户转到http://example.com,即http://example.com/index.php - >然后点击“简介”并重定向到http://example.com/intro.php

虽然这一切都运行良好,但我想知道是否有办法完全隐藏PHP脚本的名称,因此无论用户是否在index.php上,URL都将始终显示为http://example.com/ ,intro.php,faq.php等 使用RewriteRules似乎不是可行的方法,因为它基本上是朝着另一个方向:促进为用户输入特定的URL(例如,使“.php”可选)。 但是,我希望用户只能看到网站的网址,而不是单独的脚本。

单个脚本实际上是否可能类似,或者这需要将所有单个脚本组合成一个,然后使用如下构造:

if( $_POST['destination'] == "intro" )
{
  //DO ALL THE Introduction MARKUP
}

谢谢。

最佳。

4 个答案:

答案 0 :(得分:2)

您可以使用整页iframe,并在iframe中加载intro.php。这样,用户就会停留在同一页面上,但iframe中的页面会更改。

答案 1 :(得分:0)

单向(工作,但不是很好)是在index.php中包含所有脚本,并调用从这些脚本中绘制特定页面的函数。这个调用必须依赖于圆顶变量。

答案 2 :(得分:0)

当用户点击链接时,您可以使用AJAX调用加载新内容。然后你可以像往常一样创建你的网站,但添加一个类似于这个的脚本(使用jQuery):

$(function() {
    $('a').click(function() {
        $.get($(this).attr('src'), function(data) {
            document.write(data);
        });
        return false;
    });
)};

我没有尝试过这段代码,但是这方面的内容应该可行。

这当然不适用于不支持JavaScript的浏览器,而且您需要以其他方式处理表单,因此整页iframe可能是一种更简单的解决方案。

答案 3 :(得分:0)

鉴于您的进一步解释,我将使用单个清理index.php,并根据需要包含其他脚本(我甚至将它们放在您的文档根目录之外,这样就无法直接访问它们,无论是偶然的还是目的):

的index.php:

 <?php
 $action = isset($_POST['action']) ? $_POST['action'] :'index';
 switch($action){
       case 'intro':
            require '../pages/intro.php';
            break;
       case 'somethingelse':
            require '../pages/somethingelse.php';
            break;
       case 'index':
       default:
            require '../pages/index.php';
 }
 ?>

可能使用白名单可能的页面进行优化。这使您的原始index.php保持小而且整洁,仍然有可能在专用文件中做所有更复杂的东西。没有实际的需要用于javascript(功能不需要它,但当然可以根据需要使用)或者由于帧而伪装隐藏的URL(大部分时间都是如此)不会欺骗搜索索引器或只想使用关于html知识最少的直接URL的人。