【发布时间】:2014-03-06 21:48:56
【问题描述】:
我正在使用 laravel 4。
我有一个视图nest.blade.php和对应的控制器NestController.php:
控制器内容:
class NestController extends BaseController {
public function showView()
{
return View::make('nest');
}
}
路线:
Route::get('/nest', 'NestController@showView');
当我转到 url/nest 时,它不起作用。 当我去 url/index.php/nest 它确实有效。
显然我只是希望它是 /nest 没有 index.php。
我该如何解决这个问题?
我的 htaccess:
IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
【问题讨论】:
-
根据您的 .htaccess 似乎您正在运行 Laravel 4.1?无论如何,我将您的路由和控制器复制到了我的环境(4.0 和 4.1)中,并且一切都与
/nesturl 一起工作。这些都没有错。 -
有趣。这可能与我的虚拟主机有关吗?或者我在安装过程中没有做一些使路线能够工作的事情吗?所有这些可能性我都在思考。是的,我正在运行的最新版本。
-
是的,我会调查这些,但不幸的是,这超出了我的知识范围。正如我所说,一切都在我的环境中与您的 routes.php、控制器甚至 .htaccess 完美配合。我的 apache2 使用所有默认设置运行,因此也不需要任何特殊设置。
-
我建议您添加一个重写规则,以防止在您使用此方法时访问您的 .env 文件和根文件夹中的其他文件。尝试从项目根目录访问 .env 文件,例如 your-project/.env 我建议使用如下重写规则:
RewriteRule ^(.*)env$ 404.php
标签: php laravel laravel-routing