【问题标题】:laravel cannot use url correctlylaravel 无法正确使用 url
【发布时间】:2015-11-28 08:04:24
【问题描述】:

我只是安装了laravel环境,我的url有问题,我不明白。这里是首先运行的 index.php。

<a href="pass">pass to page</a>

当我单击传递到页面链接时,它可能会转到我链接到的页面。但它是 404 未找到。 这是app目录中的routes.php

Route::get('/', 'HomeController@showWelcome');
Route::get('pass', 'PassController@passToPage');

这是 PassController 中的函数

public function passToPage()
{
    return View::make('pass');
}

我注意到我只使用'\'(默认目录),我不能使用其他目录。 提前感谢我在新的 laravel 中。

【问题讨论】:

  • 如果你去localhost/test/ccc/public/pass 可以吗?
  • 它不起作用。它只知道 ccc/public/ only
  • 如果你在 pass 前面加上一个正斜杠会怎么样(例如Route::get('/pass', 'PassController@passToPage');
  • 不行,我尝试了很多方法

标签: php laravel url


【解决方案1】:

您的代码中有一些棘手的部分。

首先,您应该在链接中使用斜杠前缀。例如:

<a href="/pass">pass to page</a>

或者像这样

<a href="{{ URL::to('pass', $params) }}">

如果您使用它而不使用斜线,则 href 值可能会添加到当前路由。如果你使用斜杠前缀,它总是指向根端点。

你可以考虑使用命名路由。例如

Route::get('pass', [
    'as' => 'pass', 'uses' => 'PassController@passToPage'
]);

然后像这样在刀片视图中调用此路由:

<a href="{{ URL::route('pass', $params) }}">

如果没有参数,$params 可以替换为 []

如果错误仍然存​​在,则问题在其他地方。

【讨论】:

  • 我有一个问题,我无法访问此网址localhost/test/ccc/public/pass ... 有问题吗?
  • 你的其他路由正常吗?如果你想访问这个路由,你应该把 href 值放到 pass to page 和 routesRoute::get('/test/ccc/public /pass', 'PassController@passToPage');
  • 不不,我的意思是我在这个 url 中有目录,但它不起作用。但是当我尝试 'localhost/test/ccc/public/index.php/pass' 时,它适用于这个目录。但我不希望 index.php 存在
  • 看起来你在这里做了一些不寻常的事情。我认为您的问题出在您的开发环境配置中。我没有足够的信息来帮助你。
  • Options -MultiViews RewriteEngine On # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R =301] # 处理前端控制器... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L]
【解决方案2】:

最好使用命名路线。这样您就可以更改 URL 而无需修改应用程序中的链接。

Route::get('pass', ['uses' => 'PassController@passToPage', 'as' => 'pass']);

<a href="{{ route('pass') }}">pass to page</a>

【讨论】:

    【解决方案3】:

    我解决了这个问题。我第一次尝试直接访问此网址

    http://localhost/test/ccc/public/pass
    

    它不起作用,但是当我想转到页面页面时,我需要像这样包含 index.php

    http://localhost/test/ccc/public/index.php/pass
    

    当我输入这个时,它可以工作,但我想从 url 中删除 index.php 。 为了解决这个问题,我需要启用 mod_rewrite。所以我到了httpd.conf,删除# 符号并启用mod_rewrite。现在它可以使用这个 url

    http://localhost/test/ccc/public/pass
    

    【讨论】:

      猜你喜欢
      • 2014-06-25
      • 2017-10-09
      • 1970-01-01
      • 2014-11-01
      • 2017-12-22
      • 2017-12-05
      • 2021-02-23
      • 1970-01-01
      • 2018-04-07
      相关资源
      最近更新 更多