【发布时间】:2014-07-24 10:56:45
【问题描述】:
我对 Laravel 有点陌生,最近我在工作中设置了一个可以完全按照我想要的方式运行的设置。我有一个 Laravel 安装,其中包含一个应用程序的子目录,这些应用程序都使用相同的后端作为 RESTful 主机。
我遇到的问题是,当我在家时,我已经克隆了这个 repo 并更改了数据库设置以匹配我在家(而不是在工作)的本地主机。但是,每次我尝试为资源加载路由时,我都会得到 404'd!
这是一些代码。
app/routes.php:
Route::get('/', function()
{
return 'fgh';
});
Route::any('config', function() {
return 'GET config';
});
//Main Rest Controller
Route::resource('main', 'MainController');
// Route::resource('config', 'ConfigController');
Route::resource('data', 'DataController');
文件夹结构为:
|-- appREST (where Laravel is)
|-- shared
|-- apps (where the apps are)
我正在尝试做的(我在工作中做的)只是从应用程序/目录中的应用程序进行 AJAX 调用,但要针对 appREST 所在位置进行调整的相对路径。
在工作中,我 AJAX 到 '../../../appREST/public/config',或 ../public/main 或其他。但是,由于某种原因,这在家里失败了。工作中的两个数据库中都存在相同的表,并且两者都正常运行(其他人都没有问题)。似乎我的机器上的某些本地 Apache 或其他设置似乎失败了?
我可以在浏览器中为 REST (Route::get('/')) 加载第一条路由,并显示 'fgh'。但是,即使在更改为 GET 配置和字符串之后,任何调用 AJAX 或浏览器的任何路由,但 '/' 404s 除外。
另外,请注意,与此同时,应用程序本身运行良好。如果我加载静态/硬数据而不是我尝试加载的数据,则问题为零。这似乎与我在 Laravel/Apache 中的路由隔离。
编辑 我忘记包含 /appREST/public 文件夹的 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>
注意
设置是一个 git repo,我实际上在两台不同的机器上安装了它。在原始机器上,repo 作为工作目录开始,上面的代码工作正常。只有在我家的 clonedTo 机器上路由失败。
有人有什么想法或建议吗? 谢谢!
【问题讨论】:
标签: rest laravel-4 routing http-status-code-404