【问题标题】:Laravel routing fails beyond home pageLaravel 路由超出主页失败
【发布时间】:2014-10-29 16:34:01
【问题描述】:

我在我的 Hostmonster 共享主机站点上遇到问题,其路由页面超出了主页。我在此处使用 Laravel 框架的入门站点代码:

https://github.com/andrewelkins/Laravel-4-Bootstrap-Starter-Site

家里工作正常,但除此之外我遇到了问题。当我尝试登录时,当我的 url 尝试访问 http://example.com/user/login 时出现以下错误。如何解决此问题,以便我的页面路由到正确的位置或如何解决此问题?谢谢。

错误:

Not Found

The requested URL /public/user/login was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Apache Server at example.com Port 80

在我的 .htaccess 文件中

# Use PHP5.4 as default
AddHandler application/x-httpd-php54 .php

#AddType application/x-httpd-php54 .php


RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteCond %{REQUEST_URI} !^/public/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /public/$1 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule ^(/)?$ public/index.php [L]

在我的路线中我有这个

<?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 Closure to execute when that URI is requested.
|
*/

/** ------------------------------------------
 *  Route model binding
 *  ------------------------------------------
 */
Route::model('user', 'User');
Route::model('comment', 'Comment');
Route::model('post', 'Post');
Route::model('role', 'Role');

/** ------------------------------------------
 *  Route constraint patterns
 *  ------------------------------------------
 */
Route::pattern('comment', '[0-9]+');
Route::pattern('post', '[0-9]+');
Route::pattern('user', '[0-9]+');
Route::pattern('role', '[0-9]+');
Route::pattern('token', '[0-9a-z]+');

/** ------------------------------------------
 *  Admin Routes
 *  ------------------------------------------
 */
Route::group(array('prefix' => 'admin', 'before' => 'auth'), function()
{

    # Comment Management
    Route::get('comments/{comment}/edit', 'AdminCommentsController@getEdit');
    Route::post('comments/{comment}/edit', 'AdminCommentsController@postEdit');
    Route::get('comments/{comment}/delete', 'AdminCommentsController@getDelete');
    Route::post('comments/{comment}/delete', 'AdminCommentsController@postDelete');
    Route::controller('comments', 'AdminCommentsController');

    # Blog Management
    Route::get('blogs/{post}/show', 'AdminBlogsController@getShow');
    Route::get('blogs/{post}/edit', 'AdminBlogsController@getEdit');
    Route::post('blogs/{post}/edit', 'AdminBlogsController@postEdit');
    Route::get('blogs/{post}/delete', 'AdminBlogsController@getDelete');
    Route::post('blogs/{post}/delete', 'AdminBlogsController@postDelete');
    Route::controller('blogs', 'AdminBlogsController');

    # User Management
    Route::get('users/{user}/show', 'AdminUsersController@getShow');
    Route::get('users/{user}/edit', 'AdminUsersController@getEdit');
    Route::post('users/{user}/edit', 'AdminUsersController@postEdit');
    Route::get('users/{user}/delete', 'AdminUsersController@getDelete');
    Route::post('users/{user}/delete', 'AdminUsersController@postDelete');
    Route::controller('users', 'AdminUsersController');

    # User Role Management
    Route::get('roles/{role}/show', 'AdminRolesController@getShow');
    Route::get('roles/{role}/edit', 'AdminRolesController@getEdit');
    Route::post('roles/{role}/edit', 'AdminRolesController@postEdit');
    Route::get('roles/{role}/delete', 'AdminRolesController@getDelete');
    Route::post('roles/{role}/delete', 'AdminRolesController@postDelete');
    Route::controller('roles', 'AdminRolesController');

    # Admin Dashboard
    Route::controller('/', 'AdminDashboardController');
});


/** ------------------------------------------
 *  Frontend Routes
 *  ------------------------------------------
 */

// User reset routes
Route::get('user/reset/{token}', 'UserController@getReset');
// User password reset
Route::post('user/reset/{token}', 'UserController@postReset');
//:: User Account Routes ::
Route::post('user/{user}/edit', 'UserController@postEdit');

//:: User Account Routes ::
Route::post('user/login', 'UserController@postLogin');

# User RESTful Routes (Login, Logout, Register, etc)
Route::controller('user', 'UserController');

//:: Application Routes ::

# Filter for detect language
Route::when('contact-us','detectLang');

# Contact Us Static Page
Route::get('contact-us', function()
{
    // Return about us page
    return View::make('site/contact-us');
});

# Posts - Second to last set, match slug
Route::get('{postSlug}', 'BlogController@getView');
Route::post('{postSlug}', 'BlogController@postView');

# Index Page - Last route, no matches
Route::get('/', array('before' => 'detectLang','uses' => 'BlogController@getIndex'));

【问题讨论】:

    标签: php .htaccess laravel bootstrapping


    【解决方案1】:

    您是否在服务器配置中激活了 URL 重写?在您的 httpd.conf 文件中,您必须删除这两行开头的“#”:

    LoadModule rewrite_module modules/mod_rewrite.so
    AddModule mod_rewrite.c 
    

    要确定它是否已激活,您可以检查 phpinfo() 并查找 mod_rewrite

    【讨论】:

    • 我认为我无法访问我的共享主机站点上的那个文件。无论如何围绕这个?
    • 好吧,至少尝试用一行 phpinfo() 上传一个像 info.php 这样的简单文件,这样你就可以确定了。它必须被激活才能工作,正如文档所说laravel.com/docs/4.2/installation#pretty-urls
    • 感谢您将我指向此文档。它帮助我找出问题所在。我拥有的 .htaccess 文件位于我的根目录 / 但我还需要 /public 目录中的 .htaccess 文件。
    猜你喜欢
    • 2016-12-01
    • 2017-05-22
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 2020-04-10
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多