.htaccess 附加 URL 带锚标记的 Slug
.htaccess appending URL Slugs with the anchor tags
我正在 Core PHP 中创建博客,以更好地了解 CMS 的核心功能。但是,当我显示单个 post.
时,我在菜单中遇到了挑战
我正在使用下面的 .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=&slug= [L,QSA]
RewriteRule ^(.+)/([\w-]+)$ app/post.php?category= [L]
以上代码会将www.example.com/post.php?category=some&slug=title-ti
转换为www.example.com/some/title-ti
现在发生的事情是,当我在索引页上时,我正在动态生成菜单。所以菜单是按照 slugs.
Technology
- usage-tips
- overview
上面的菜单 URLs 会像 www.example.com/technology
, `www.example.com/usage-tips', 'www.example.com/overview'
但是当我打开单个 post 页面时
我的URL是www.example.com/technology/demo-post
我得到的菜单 URL 是
上面的菜单 URLs 会像 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
}
?>
您希望以这种方式使用 absolute-path reference
浏览器将从您站点的根目录而不是当前目录启动。要使用它,请以 /
.
开头的 href
$menu .= '<li class='.$putclass.'><a href="/'.$row["slug"].'">'.$row['name'].'</a>';
我正在 Core PHP 中创建博客,以更好地了解 CMS 的核心功能。但是,当我显示单个 post.
时,我在菜单中遇到了挑战我正在使用下面的 .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=&slug= [L,QSA]
RewriteRule ^(.+)/([\w-]+)$ app/post.php?category= [L]
以上代码会将www.example.com/post.php?category=some&slug=title-ti
转换为www.example.com/some/title-ti
现在发生的事情是,当我在索引页上时,我正在动态生成菜单。所以菜单是按照 slugs.
Technology
- usage-tips
- overview
上面的菜单 URLs 会像 www.example.com/technology
, `www.example.com/usage-tips', 'www.example.com/overview'
但是当我打开单个 post 页面时
我的URL是www.example.com/technology/demo-post
我得到的菜单 URL 是
上面的菜单 URLs 会像 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
}
?>
您希望以这种方式使用 absolute-path reference
浏览器将从您站点的根目录而不是当前目录启动。要使用它,请以 /
.
href
$menu .= '<li class='.$putclass.'><a href="/'.$row["slug"].'">'.$row['name'].'</a>';