Php 此.htaccess结构的强制尾部斜杠

Php 此.htaccess结构的强制尾部斜杠,php,.htaccess,routes,Php,.htaccess,Routes,在我的项目中,我使用下面的PHP&htacess代码作为路由结构,我想向所有这样的路由添加强制尾随斜杠 localhost/project/about-uslocalhost/project/about-us/ 它在像localhost/project/这样的主路径上工作,所以我不能在没有像localhost/project这样的尾随斜杠的情况下显示主路径,因为它是重定向我(这是我对所有路由的要求) 我该怎么做?谢谢代码: function request_path() { $reque

在我的项目中,我使用下面的PHP&htacess代码作为路由结构,我想向所有这样的路由添加强制尾随斜杠

localhost/project/about-us
localhost/project/about-us/

它在像
localhost/project/
这样的主路径上工作,所以我不能在没有像
localhost/project
这样的尾随斜杠的情况下显示主路径,因为它是重定向我(这是我对所有路由的要求)

我该怎么做?谢谢代码:

function request_path()
{
    $request_uri = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
    $script_name = explode('/', trim($_SERVER['SCRIPT_NAME'], '/'));
    $parts = array_diff_assoc($request_uri, $script_name);
    if (empty($parts))
    {
        return '/';
    }
    $path = implode('/', $parts);
    if (($position = strpos($path, '?')) !== FALSE)
    {
        $path = substr($path, 0, $position);
    }
    return $path;
}

$routes = [
  '/' => function()
  {
      echo 'home';
  },
  'about-us' => function()
  {
      echo 'about';
  },
  'profile/edit' => function()
  {
      echo 'profile edit';
  }
];

$path = request_path();

if (isset($routes[$path]) AND is_callable($routes[$path]))
{
  $routes[$path]();
}
else
{
  echo 404;
}

project
是项目所在的实际存在的文件夹吗?然后,尾部斜杠重定向由mod_dir的一部分
DirectorySlash
指令完成。但是,如果您请求的内容首先没有指向物理上存在的文件夹,则这不适用,因此您必须自己执行此操作。您可以在PHP中执行此操作,也可以直接在.htaccess中执行。(对于后者,请做一些研究,因为这并不完全是一个新问题。)感谢@CBroe的回复,project是一个真正的文件夹,但其他文件夹是路由,正如您所看到的,我只想将路由重定向到带有尾部斜杠的文件夹。解释通过.htaccess执行此操作的基础知识;如果您想改为使用PHP,请检查请求的URL是否以斜杠结尾,如果不是,请添加它并使用
标题
位置:…
从那里重定向。这是否回答了您的问题?
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]