BASE URL 路由未按预期工作
BASE URL Routing not working as intended
我是 Laravel 的新手,我曾与 Laravel 4 合作过,但我决定将新奇的 Laravel 5 用于个人项目并真正学习它。
我想在 Webmasters.SE 上发帖,但找不到关于 Laravel 的任何其他问题。
我在互联网上找不到任何解决方案,我很乐意提供更多信息。
所以我刚刚在我的本地 WAMP 服务器上使用他们自己的 installaton how-to 安装了一个新的 Laravel 5 应用程序。我做了整个 Composer mumbo-jumbo,一切都完成了它的工作并且没有显示任何错误。
问题
现在这是我的问题,当我使用 http://localhost/test.com/public/
访问网站时,我得到了默认页面,就像它应该的那样。
在 routes.php
(如下所示)中,您会看到他们定义了一条 home
路线。所以我在我的 url 栏中输入 http://localhost/test.com/public/home
,然后我被重定向回 http://localhost/test.com/public/auth/login
,如下图所示。
(它没有任何样式,我假设它应该是这样的?)
无论如何,我到了那里,我将鼠标悬停在 Home
上,底部 left/right 的小 url 栏只显示 http://localhost
,点击它重定向了我到 WAMP 服务器主页。
这些是他们 link 到的 URL:
- 首页 ->
http://localhost
- 登录 ->
http://localhost/auth/login
- 注册 ->
http://localhost/auth/register
- 忘记密码 ->
http://localhost/password/email
要求的结果应该是我应该被重定向到 http://localhost/test.com/..
我不知道这是哪里造成的,我 假设 这与 .htaccess
、routes.php
或paths
设置不正确。 .htaccess
和 routes.php
我都试过修改,但我显然缺乏自己调试这个问题的知识。
代码资源(全新安装,没有任何改变)
routes.php
<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
Route::get('/', 'WelcomeController@index');
Route::get('home', 'HomeController@index');
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ / [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
您需要在config/app.php
(或您合适的环境配置文件)中配置url
参数。默认情况下,这设置为 http://localhost
,因此在您的情况下,您需要将其设置为 http://localhost/test.com/public/
。
编辑
看起来视图中的 urls 是硬编码的(对于 example). The fix is the same as this ,即将每个硬编码的 url(例如 <li><a href="/">Home</a></li>
)替换为url()
助手(例如 <li><a href="{{ url('/') }}">Home</a></li>
)。
我是 Laravel 的新手,我曾与 Laravel 4 合作过,但我决定将新奇的 Laravel 5 用于个人项目并真正学习它。
我想在 Webmasters.SE 上发帖,但找不到关于 Laravel 的任何其他问题。
我在互联网上找不到任何解决方案,我很乐意提供更多信息。
所以我刚刚在我的本地 WAMP 服务器上使用他们自己的 installaton how-to 安装了一个新的 Laravel 5 应用程序。我做了整个 Composer mumbo-jumbo,一切都完成了它的工作并且没有显示任何错误。
问题
现在这是我的问题,当我使用 http://localhost/test.com/public/
访问网站时,我得到了默认页面,就像它应该的那样。
在 routes.php
(如下所示)中,您会看到他们定义了一条 home
路线。所以我在我的 url 栏中输入 http://localhost/test.com/public/home
,然后我被重定向回 http://localhost/test.com/public/auth/login
,如下图所示。
无论如何,我到了那里,我将鼠标悬停在 Home
上,底部 left/right 的小 url 栏只显示 http://localhost
,点击它重定向了我到 WAMP 服务器主页。
这些是他们 link 到的 URL:
- 首页 ->
http://localhost
- 登录 ->
http://localhost/auth/login
- 注册 ->
http://localhost/auth/register
- 忘记密码 ->
http://localhost/password/email
要求的结果应该是我应该被重定向到 http://localhost/test.com/..
我不知道这是哪里造成的,我 假设 这与 .htaccess
、routes.php
或paths
设置不正确。 .htaccess
和 routes.php
我都试过修改,但我显然缺乏自己调试这个问题的知识。
代码资源(全新安装,没有任何改变)
routes.php
<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
Route::get('/', 'WelcomeController@index');
Route::get('home', 'HomeController@index');
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
.htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ / [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
您需要在config/app.php
(或您合适的环境配置文件)中配置url
参数。默认情况下,这设置为 http://localhost
,因此在您的情况下,您需要将其设置为 http://localhost/test.com/public/
。
编辑
看起来视图中的 urls 是硬编码的(对于 example). The fix is the same as this <li><a href="/">Home</a></li>
)替换为url()
助手(例如 <li><a href="{{ url('/') }}">Home</a></li>
)。