在视图上生成 URL 时,Laravel 命名路由方法不会生成主机服务器的 (apache) 别名

Posted

技术标签:

【中文标题】在视图上生成 URL 时,Laravel 命名路由方法不会生成主机服务器的 (apache) 别名【英文标题】:The Laravel named route method doesn't generate host server's (apache) alias when generating the URL on view 【发布时间】:2021-12-27 05:50:36 【问题描述】:

我想发送一封带有按钮的电子邮件,该按钮带有指向我想将收件人重定向到的页面的链接。我的web.php 路由文件中有这条命名路由:

Route::get('/', [ProbationPeriodController::class, 'index'])->name('Probation.index');

我为我的电子邮件视图上的按钮添加了以下代码:

<a href="route('Probation.index')" target="_blank">Take Action</a>

我在 Windows 上的 apache 服务器上托管了我的应用程序,别名快捷方式为 apps,并且配置工作正常。 我还配置了.htaccess 文件以反映别名,它在整个应用程序中都可以正常工作。这是我的 .htaccess 文件:

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

RewriteEngine On

RewriteBase /apps/

# 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 ^ index.php [L]

# Add /apps/ After The IP Address or Domain name
RewriteCond %REQUEST_URI !^/apps
RewriteRule ^(.*)$ /apps/$1 [L]

当我在 电子邮件视图 上使用命名路由 Probation.index 时出现问题。电子邮件发送正常,但是当收件人单击按钮时,它会为他们提供一个没有别名的 URL。 我希望这样:http://example.com/apps/probation 但结果省略了apps 并显示http://example.com/probation。欢迎提出任何建议!

【问题讨论】:

试试route('Probation.index','apps') 您需要添加 env var APP_URL - 路由器从中确定主机。 【参考方案1】:

@Maksim 谢谢。它解决了这个问题。我希望您写的是答案而不是评论,以便我可以将其批准为已接受的答案并为您投票。 我修改了我的.env 文件并将APP_URL 更新为我的路由的适当前缀。

【讨论】:

以上是关于在视图上生成 URL 时,Laravel 命名路由方法不会生成主机服务器的 (apache) 别名的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 中的返回视图未显示正确的 URL

laravel 命名路由 name

laravel 命名路由 name

四PHP框架Laravel学习笔记——路由命名和分组

laravel如何使用命名路由

Laravel在哪里执行cmd命令以生成控制器模板