PHP - Динамическая ссылка Вопросы - PullRequest
0 голосов
/ 21 марта 2019

Я тестировал динамическое отображение ссылок на страницы с помощью 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 / everythingElse, я хочу, чтобы он вернулся обратно просто в index.php, но каждый раз, когда я пытаюсь включить (index.php), я генерирую бесконечный цикл и страница вылетает. Как я могу избежать этого?

enter image description here

1 Ответ

0 голосов
/ 21 марта 2019

Вы не можете скрыть строку запроса в URL, но вы можете добавить правила .htaccess, чтобы переписать URL во что-то более красивое.Например, index.php? Page = test может стать index / 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...