如何在子目录 Laravel 中正确配置 htaccess?

Posted

技术标签:

【中文标题】如何在子目录 Laravel 中正确配置 htaccess?【英文标题】:How to correctly configure htaccess in subdirectory Laravel? 【发布时间】:2021-05-10 14:06:54 【问题描述】:

我目前正在遵循本指南,以允许在 Laravel 中运行我们当前的遗留 php 应用程序,以便随着时间的推移完全迁移。 https://tighten.co/blog/converting-a-legacy-app-to-laravel/

为此,我设法让 Laravel 运行旧应用程序 index.php 文件,但是我认为路由可能存在一些问题,因为 URL 不正确并且登录页面无法加载。

这是我当前的文件结构,我有两个 .htaccess 文件,一个位于 laravel 的根目录,一个位于 legacy 文件夹的根目录。

laravel 根 htaccess 文件正在重写公用文件夹,因此在开发时它不应显示在 URL 中。

RewriteEngine On
RewriteCond %REQUEST_URI !^/public/
RewriteRule ^(.*)$ /public/$1 [L,QSA]

遗留应用程序 .htaccess 文件处理旧系统的视图和文件的所有路由,见下文。

Options -Indexes
DirectoryIndex index.php

AddType image/svg+xml svg
AddType image/svg+xml svgz

# HSTS Header - removed https only as AWS lb > server is http
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

# core redirects
RewriteEngine On
RewriteBase /legacy

RewriteRule ^login/?$ /views/login/index.php [QSA,L]
RewriteRule ^app-redirect?$ /callback/apps/redirect_device.php [QSA,L]
RewriteRule ^login/logout?$ /views/login/logout.php [QSA,L]
RewriteRule ^register([/]*)$ /views/login/register.php [QSA,L]
RewriteRule ^login/change-password([/]*)$ /views/login/change_password.php [QSA,L]
RewriteRule ^authenticate/auth-check([/]*)$ /views/login/auth_check.php [QSA,L]

在访问应用程序时,它似乎也影响了公共 URL 重写,因为它将公共重新添加到 URL 中,如下所示:

system.co.uk/public/login

应该是什么时候

system.co.uk/login

总结

所以我让它成功运行了位于 legacy 文件夹中的 index.php 文件,但是它只是停在那里它似乎没有将传统 .htaccess 文件中的任何路由(如 /login)带入帐户。

有人知道这里会发生什么吗?

【问题讨论】:

你解决过这个问题吗?遵循相同的指南遇到类似的问题 我修复了它,但不是以我希望的方式。根 .htaccess 文件将所有内容重定向到 index.php 并正常运行 laravel 应用程序,但这也适用于进入应用程序的任何其他路由。这是由 laravel 路由处理的,但是由于它是任何旧路由的全部回退,我不得不创建自己的路由控制器,因为旧 htaccess 文件中定义了旧路由,当 laravel 接管路由时未处理该文件据我所知。 【参考方案1】:

legacy 文件夹下的 htaccess 文件不应影响根文件夹。 重定向可以被您的浏览器缓存,您是否尝试过其他浏览器或使用隐身模式?

【讨论】:

谢谢,是的,我什至尝试破坏 htaccess 文件以检查它是否接收了更改,并在我做出更改后立即获取更改,而不是从我能看到的内容中缓存。

以上是关于如何在子目录 Laravel 中正确配置 htaccess?的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中使用 Sendmail 发送电子邮件的正确配置是啥?

Laravel 5.3 保护下载文件的正确方法

如何使用 Laravel 集成 CCAvenue

Laravel 路由和 .htaccess 文件不适用于 1and1 托管

如何在Laravel中修复PDO sqlsrv连接超时?

如何正确使用 Composer 安装 Laravel 扩展包