php - 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
.
笔记:
- 我没有更改文件夹结构。(Laravel 默认文件夹结构存在)。
- 我在 .htacees 文件中只写了一行代码:
Options - Indexes
. 一般来说,这给了我 403 错误(禁止访问!)。 - 版本“laravel/framework”:“5.8.*”
我写在 web.php 但它不工作..
Route::get('/admin', function () {
return redirect('/admin/login');
});
如果需要更多解释请评论..
解决方案
要修改 .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 所建议的那样更改目录结构将是一个更好的解决方案。
推荐阅读
- amazon-web-services - 使用 Ansible 删除 ECS 服务
- ruby-on-rails - 当我删除产品表中的产品时,productIndex 不会更新
- mysql - 桥表上的 SQL SELECT 查询
- php - 如何为连接的 SQL 结果分配不同的变量
- spring-webflux - 如果 Mono 为空,如何返回 null,否则如何返回 map?
- python - 加密和解密项目不使用循环结束
- python - 从字符串中删除除数字和小数之外的所有内容
- android - 我可以创建和使用颤振驱动程序自主测试作为 apk
- python - 矩形窗的 DFT
- javascript - Jest 无法从 jQuery 返回值