【问题标题】:Laravel app routes incorrectly for mod_rewrite redirected requestsLaravel 应用程序为 mod_rewrite 重定向请求路由错误
【发布时间】:2017-12-15 04:58:16
【问题描述】:

我正在使用 Laravel 应用程序作为 API 处理程序的旧 PHP 应用程序。旧版应用程序和 Laravel 应用程序都在同一个域中,并且在同一个服务器上。 Laravel 是从旧应用程序中的子文件夹进行符号链接的。网络服务器是 Apache。

我为 Laravel 设置了用于返回 PDF 的端点。 PDF 由旧版应用程序生成,并根据业务规则(客户 ID、位置等)命名并放置在目录中。即 /22/435123/435123-22.pdf 其中 22 是位置,435123 是客户 ID。

如果我将端点作为 URL 输入,它就可以完美运行。 要从旧版应用程序访问它,我使用 .htaccess 重写规则来重写旧版路由/URL。重写规则测试站点显示 URL 被正确重写。 Laravel 路由(使用上面的例子)是:/api/22/435123?filename=435123-22.pdf

当我从旧版应用程序中找到路由时,Laravel 会路由到 Laravel 中的 index.php,并附加文件名查询。 index.php?filename=435123-22.pdf

这是重写($2 与 api 无关) RewriteRule ^files/([0-9]+)/([0-9]+)/([0-9]+)/(.*)$ /laravel/api/$1/$3?filename=$4

有什么想法吗?我可以提供任何其他信息吗?

编辑
在 Laravel 方面,我添加了日志中间件来记录命中 API 的请求。 Laravel 将请求 URI 记录为 [Laravel Root]/index.php?[query string sent from legacy app]

【问题讨论】:

    标签: laravel mod-rewrite laravel-5


    【解决方案1】:

    解决方案是重写为完整路径。
    https://%{HTTP_HOST}/laravel/api/$1/$3?filename=$4

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      相关资源
      最近更新 更多