Laravel 5.0

时间:2016-06-03 07:58:33

标签: html laravel laravel-5

我正在尝试在我的网络应用程序的所有页面上显示特定链接。链接如下:

<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>放在部分文件中;我将该文件包含在所有页面中。

2 个答案:

答案 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。

希望这有效!

https://laravel.com/docs/5.2/routing#named-routes

的更多信息

答案 1 :(得分:1)

应为href="/my-link"/表示从root开始。

您可以尝试使用./my-link../my-link../../my-link等其他方式来查看发生的情况。

请参阅link: absolute, relative, root