PHP-动态链接问题

时间:2019-03-21 12:37:22

标签: php html dynamic

我正在测试使用php动态显示页面链接的情况,并且能够使用index.php中的以下代码来实现它:

    <a href="index.php">Home</a>
<a href="index.php?page=about">About</a>
<a href="index.php?page=contact">Contact</a>
<a href="index.php?page=news">news</a>


<div class="content">
    <?php

        if( !empty($_GET['page']) ) {

            $allPages = scandir('pages', 0);
            unset($allPages[0], $allPages[1]);
            $page = $_GET['page'];

            if( in_array($page . '.inc.php', $allPages) ) {

                include('pages' . '/' . $page . '.inc.php');
            } else {
                echo "page not found";
            }
        } else {
            include('pages' . '/home.inc.php');
        }






    ?>
</div>

附带,您还将找到我的目录结构的图像。

我有两个问题:

  1. 由于url中的每个项目都显示有?page=contact,我可以使用.htaccess文件将其隐藏吗?
  2. 如果您在该index.php主页面上并尝试编写index.php / anythingElse,我希望它恢复为简单的index.php,但是每次尝试包含(index.php)时,我都会生成一个无限循环,页面崩溃。如何避免这种情况?

enter image description here

1 个答案:

答案 0 :(得分:0)

您无法在url中隐藏查询字符串,但是可以添加.htaccess规则以将url重写为更漂亮的内容。例如,index.php?page = test可以变成索引/测试。

#redirect /index.php?page=test to /index/test
RewriteCond %{THE_REQUEST} /page.php\?query=([^\s]+) [NC]
RewriteRule ^.+$ /page/%1? [L,R]

#rewrite /index/test to /index.php?page=test
RewriteRule ^page/(.*)$ page.php?query=$1 [L]