Laravel 和 htaccess 的重定向 Url 问题

نور*_*نور 5 php .htaccess redirect url-rewriting laravel

我在本地 xampp 中为我的项目创建虚拟主机。网址: http: //kooltech-us.com/

我在公共文件夹(Laravel)中有文件夹名称 admin (如下图所示)。

在此输入图像描述

在我的项目中我的管理员登录网址 http://localhost/admin/login

我点击 urlhttp://localhost/admin/login进入管理员登录页面.. 没关系.. 但是当我点击这个http://localhost/admin.. 它带我到 public/admin 文件夹。这意味着向我显示公共目录列表。

在此输入图像描述

为了防止访问目录列表或 public/admin,我在 .htaccess 文件中写入Options - Indexes代码。一般来说,它会给我 403 错误(禁止访问!)。是工作。

在此输入图像描述

我正在寻找当我点击网址时http://localhost/admin它会带我去的 http://localhost/admin/login

笔记:

  1. 我没有更改文件夹结构。(Laravel 默认文件夹结构存在)。
  2. 我在 .htacees 文件中只写了一行代码: Options - Indexes。一般来说,这会给我 403 错误(禁止访问!)。
  3. 版本“laravel/framework”:“5.8.*”

我在 web.php 中编写但它不起作用..

Route::get('/admin', function () {
  return redirect('/admin/login');
});
Run Code Online (Sandbox Code Playgroud)

如果需要更多解释请评论..

Chr*_*ris 2

要修改 .htaccess,您需要在 .htaccess 中添加类似的内容,这会将所有请求从 /admin 重定向到 /public,但仍显示为 /admin,这将允许您的重定向正常工作web.php:-

RewriteRule admin /public [L] 
Run Code Online (Sandbox Code Playgroud)

这会给你:-

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On
    
    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule admin /public [L] 
    RewriteRule ^ index.php [L]

    
</IfModule>
Run Code Online (Sandbox Code Playgroud)

但是我仍然觉得这是不好的做法,并且按照 @flakerimi 的建议更改目录结构将是一个更好的解决方案。

  • 请在您的答案中添加所有解释,而不是链接到外部资源 (2认同)