1

我的代码非常简单,但问题是每当我单击锚标记
时,它都会自动附加到 url 路径,从而导致页面不存在。
例如

 <li> <a href="blog/tag?cat=<?= $singleTag['id'];?>" 
       class="d-flex text-capitalize">
                           <p><?= $singleTag['name']; ?></p>
       </a>  </li>

它会假设我正在尝试导航到

博客/博客/标签?猫=东西

我真的不知道第一个/blog 来自哪里,我查看了其他答案,他们建议在链接前面
添加//双反斜杠,但这不起作用,因为我试图引用本地文件。

我的路线文件

<?php

$router->get('','controllers/index.php');
$router->get('about','controllers/about.php');
$router->get('contact','controllers/contact.php');
$router->get('events','controllers/events.php');
$router->get('event/detail','controllers/event-detail.php');
$router->get('news','controllers/news.php');
$router->get('news/detail','controllers/news-detail.php');
$router->get('members','controllers/members.php');
$router->get('blog','controllers/blog.php');
$router->get('blog/detail','controllers/single-blog.php');
 $router->get('blog/tag','controllers/all-blog-tags.php');
$router->get('oops','controllers/error-page.php');    ?>

我的请求类

<?php

class Request
{
    public static function uri()
    {
      //  dd(parse_url($_SERVER['REQUEST_URI'],PHP_URL_QUERY));
      $urlQuery = parse_url($_SERVER['REQUEST_URI'],PHP_URL_QUERY);
       if (strpos($urlQuery, 'slug=') !== false) {
       $GLOBALS['slug'] = $urlQuery;

       }
       if (strpos($urlQuery, 'cat=') !== false) {
        $GLOBALS['cat'] = $urlQuery;

        }

          return ( trim(parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH),'/'));
     }

    public static function method()
    {
        return ($_SERVER['REQUEST_METHOD']);
    }
}                ?>

我的路由器类

<?php

class Request
{
    public static function uri()
    {
      //  dd(parse_url($_SERVER['REQUEST_URI'],PHP_URL_QUERY));
      $urlQuery = parse_url($_SERVER['REQUEST_URI'],PHP_URL_QUERY);
       if (strpos($urlQuery, 'slug=') !== false) {
       $GLOBALS['slug'] = $urlQuery;

       }


          return ( trim(parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH),'/'));
     }

    public static function method()
    {
        return ($_SERVER['REQUEST_METHOD']);
    }
}
4

1 回答 1

1

href="/blog/tag将从服务器/本地机器上 public_html 空间的根目录开始。对于远程文件,这是正确的方法。

href="/blog/tag
      ^
      |

注意前导/告诉浏览器从本地文件路径根目录开始,所以浏览器将从

site.com/ <==/是领先的,上面。

所以:

/blog/tag

永远

your-website.com/blog/tag

如果没有前导斜杠,则路径是相对于当前文件的,而不是网站根目录

也浏览这个问答

于 2020-02-18T13:12:49.507 回答