Моя страница имеет 2 раздела, заголовок и содержание.Чтобы не перезагружать заголовок в навигации, я использую Ajax для получения html-контента со страницы, которая ссылается на нажатую ссылку.В то же время я использую htaccess, чтобы перенаправить все в файл index.php, чтобы я мог контролировать каждый запрос и проверять его, возвращать HTML-контент.Проблема в том, что при первом доступе к странице я помещаю заголовок в шаблон.Затем я нажимаю на ссылку, поэтому Ajax вызывает и перенаправляет на index.php, потому что правило htaccess.Но в этом вызове возвращается содержимое и заголовок.Итак, у меня есть страница индекса внутри страницы индекса, и заголовок дублируется.Пытаясь узнать, когда заголовок уже загружен, чтобы не загружать его снова, я пытаюсь использовать сеансы, но я не знаю, как узнать, был ли заголовок действительно загружен или нет.Я не хочу использовать какую-либо информацию со стороны клиента, например, заголовки, из соображений безопасности.
index.php
<?php
session_start();
if(!isset($_SESSION["header_already_loaded"])){
$_SESSION["header_already_loaded"] = true;
require_once "header.html";
}
$routes = array(
"/" => "home.html",
"/profile" => "profile.html",
"/config" => "config.html"
);
$uri = $_SERVER["REQUEST_URI"];
$file = isset($routes[$uri]) ? $routes[$uri] : $routes["/"];
echo '<div id="content">';
require_once $file;
echo '</div>';
?>
header.html
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).on('click', "a", function(e){
$.ajax({
async: false,
url: this.pathname,
type: 'post',
success: function(ret) {
$("#content").html(ret);
}
});
return false;
});
</script>
<style>
#content{
border: 1px solid black;
}
</style>
<div id="header">
<a href="/">Home</a>
<a href="/profile">Profile</a>
<a href="/config">Configurations</a>
</div>
htaccess:
DirectorySlash Off
RewriteEngine On
RewriteRule ^(.*)$ index.php [L]