我正在尝试在我的网络应用程序的所有页面上显示特定链接。链接如下:
<a href="my-link">Some text for the link!</a>
我的路线档案
Route::get('home', 'HomeController@index');
Route::get('path1/path2/path3', 'SomeController@someFunction');
Route::get('my-link', 'SomeController@myLink');
浏览网页应用时,当我在mydoamin.com/home
时,链接地址为mydomain.com/my-link
,这是正确的。
但当我在网址mydoamin.com/path1/path2/path3
时,链接地址变为mydoamin.com/path1/path2/my-link
。因此,点击链接后,由于路径不存在,我得到404错误。
如何在不对域名进行硬编码的情况下,始终在所有页面上显示mydomain.com/my-link
的链接?
注意:我已将链接代码<a href="my-link">Some text for the link!</a>
放在部分文件中;我将该文件包含在所有页面中。
答案 0 :(得分:2)
为什么不使用/my-link
?
您可以在根目录(<a href="/my-link">My link</a>
)上运行的网站上使用www.domain.com/my-link
。但是,如果您在子目录中运行它,则需要更改所有URL。
这就是Laravel引入named routes
的原因,这会自动创建正确的网址。
例如:
如果您的网站是www.domain.com/my-website/
,并且您需要指向/my-link
,则需要将项目中的所有链接更改为/my-website/...
。
所以我建议使用named routes
。
如何使用named routes
命名路由可以方便地生成特定路由的URL或重定向。
这是您需要使用的代码:
Route::get('home', ['as' => 'home', 'uses' => 'HomeController@index']);
Route::get('path1/path2/path3', ['as' => 'path3', 'uses' => 'SomeController@someFunction']);
Route::get('my-link', ['as' => 'my-link', 'uses' => 'SomeController@myLink']);
之后你可以使用:
<a href="{{ url(route('my-link')) }}">
Some text for the link!
</a>
Laravel将自动为您要使用的指定路线创建正确的URL。
希望这有效!
的更多信息答案 1 :(得分:1)
应为href="/my-link"
,/
表示从root开始。
您可以尝试使用./my-link
,../my-link
或../../my-link
等其他方式来查看发生的情况。