.htaccess добавление URL-слагов с тегами привязки

Я создаю блог на Core PHP, чтобы лучше понять основные функции CMS. Тем не менее, я сталкиваюсь с проблемой в меню, когда я показываю один пост.

Я использую ниже .htaccess код

# code to make pretty URLS | we're using this code to achieve /category/slug
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/([\w-]+)/([\w-]+)$ app/post.php?&category=$2&slug=$3 [L,QSA]
RewriteRule ^(.+)/([\w-]+)$ app/post.php?category=$2 [L]

Приведенный выше код преобразует www.example.com/post.php?category=some&slug=title-ti в www.example.com/some/title-ti

Теперь, когда я нахожусь на странице индекса, я динамически генерирую меню. Таким образом, меню согласно слизнякам.

Technology
- usage-tips
- overview

вышеупомянутые URL меню будут похожи www.example.com/technology, «www.example.com/usage-tips», «www.example.com/overview»

но когда я открываю одну страницу поста

URL, который у меня есть www.example.com/technology/demo-post

и URL-адреса меню, которые я получаю,

вышеупомянутые URL меню будут похожи www.example.com/technology/technology, «www.example.com/technology/usage-tips», «www.example.com/technology/overview» и многое другое — это бесконечный цикл.

Если я проверю элемент, это www.example.com/usage-tips и так далее, но когда я нажимаю или нахожу ссылки, я перенаправляюсь на www.example.com/technology/usage-tips связи

Что происходит, есть ошибка с моим PHP-кодом или .htaccess код

ниже мой динамический код заголовка

$query = ' SELECT id, name, slug FROM categories WHERE status = 1 AND parent_id = "'.$parent_id.'" ORDER BY priority ASC ';
$connection = $this->establish_connection();
$data = $connection->query($query);
$connection->close();
if($data->num_rows > 0)
{
$putclass = $menu = "";
while($row = $data->fetch_assoc())
{
if($arrow_status)
{  $putclass = "";  }
else
{ $putclass = "drop";   }

$menu .= '<li class='.$putclass.'><a href="'.$row["slug"].'">'.$row['name'].'</a>';
$menu .= '<ul class="dropdown">'.$this->menu($row["id"], true).'</ul>';
$menu .= '</li>';
}

return $menu;
}

Это мой код post.php

<?php
// print_r($_GET);
?>
<?php
if(isset($_GET['category']) && isset($_GET['slug']))
{
?>
//some content if both are set
<?php
}

elseif(isset($_GET['category']) && !isset($_GET['slug']))
{
?>
//some content if only category is set
<?php
}
?>

1

Решение

Вы хотите использовать absolute-path reference Таким образом, браузер будет запускаться из корня вашего сайта, а не из текущего каталога. Чтобы использовать это начало href с ведущим /,

$menu .= '<li class='.$putclass.'><a href="/'.$row["slug"].'">'.$row['name'].'</a>';
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector