首页 > 解决方案 > Laravel 和 htaccess 的重定向 URL 问题

问题描述

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

我在公用文件夹(Laravel)中有文件夹的名称 admin(来自下图)。

在此处输入图像描述

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

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

在此处输入图像描述

为了防止访问目录列表或公共/管理员,我Options - Indexes在 .htaccess 文件中编写代码。它通常给我 403 错误(禁止访问!)。这是工作。

在此处输入图像描述

当我点击 url 时,我正在寻找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');
});

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

标签: phplaravel.htaccessredirecturl-rewriting

解决方案


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

RewriteRule admin /public [L] 

这会给你: -

<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>

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


推荐阅读