在视图上生成 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) 别名的主要内容,如果未能解决你的问题,请参考以下文章