#php #html #dynamic
#php #HTML #динамический
Вопрос:
Я тестировал динамическое отображение ссылок на страницы с помощью 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>
В приложении вы также найдете изображение моей структуры каталогов.
У меня есть два вопроса:
- Поскольку каждый элемент в URL отображается с
?page=contact
, могу ли я скрыть это с помощью файла .htaccess? - Если бы вы были на этом главном index.php страница и попытался написать index.php /anythingElse Я хочу, чтобы он вернулся к простому index.php, но каждый раз, когда я пытаюсь включить (index.php ) Я генерирую бесконечный цикл, и страница вылетает. Как я могу этого избежать?
Комментарии:
1. к пункту 1: откуда веб-сервер должен знать, куда вас перенаправить, если вы не указали
?page=contact
? По крайней мере, это должно быть что-то вродеindex/contact
2. Вы действительно хотите / нуждаетесь в написании собственного маршрутизатора? Почему бы не использовать один из многих существующих?
3. Привет, Джефф, вовсе нет. Новичок в PHP, поэтому я просто проверяю некоторые теории. Можете ли вы уточнить?
Ответ №1:
Вы не можете скрыть строку запроса в 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]