所以我最近和大概一天前一樣,詢問爲什麼我的routes were not working for slim和根據答案,我做了適當的修改,但除非我做錯路由選擇,否則它們不起作用。SlimPHP和路由 - 我做錯了嗎?
如果我們看一下我已經設置了路由文件,該文件在index.php
文件要求,我們可以看到:
<?php
use \ImageUploader\Controllers as Controller;
/** ---------------------------------------------------------------- **/
// Routes.
//
// Routes are defined here. Nothing should happen in a route other then
// Calling acontroller based action, such as: indexAction.
/** ---------------------------------------------------------------- **/
$app = new \Slim\Slim();
$app->get('/', function(){
Controller\HomeController::showHome();
});
$app->get('/signup', function(){
Controller\SignupController::showSignupForm();
});
$app->post('/signup/new', function() use ($app){
var_dump($app->request()->post('username'));
var_dump($app->request()->post('password'));
});
// Don't touch.
$app->run();
,我列出了一些路線。現在我可以去第一個,它會顯示HomeController::showHome
的內容,但如果我嘗試並導航到http://localhost/image-upload/signup
我得到:
Not Found
The requested URL /image-upload/signup was not found on this server.
現在我的項目在根目錄下不坐,它位於圖像上傳,所以當我只是去本地主機/圖像上傳我看到/
路由執行結果。
我的htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /image-upload/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule^index.php [L]
</IfModule>
而且我index.php
文件看起來像:
<?php
/** ---------------------------------------------------------------- **/
// This is the core app.
/** ---------------------------------------------------------------- **/
if (!file_exists('bootstrap.php')) {
throw new \Exception('Where is the bootstrap.php?');
}
require_once 'bootstrap.php';
/** ---------------------------------------------------------------- **/
// Routing.
/** ---------------------------------------------------------------- **/
require_once 'app/routes.php';
我做苗條路由錯誤或...
所做的更改
修正了重寫基礎,它是假設是/ image-upload /。這怎麼沒有解決任何問題。 Mod Rewrite已啓用並打開。
有人建議待定image-upload/
(或相似)的苗條核心路線。這沒有幫助。實際上它破壞了路由。
Is * mod_rewrite * enabled?是* htaccess *執行?以防萬一,你是否嘗試給你的Slim規則添加'/ image-upload /'前綴?另外,htaccess中的RewriteBase被設置爲'/ image-uploader /'。這是一個錯字還是應該像你談論的那樣是'/ image-upload /'? –
@JustinIurman請參閱修訂後的問題,包括修改後的內容,TLDR,固定的'RewriteBase',前綴中斷路由和mod-rewrite。是的htaccess是執行,我認爲 - 作爲第一條路線工作正常。 – TheWebs
這並不意味着htaccess被執行,因爲'/'在大多數情況下與'index.php'相同。嘗試在你的htaccess中放入一些隨機垃圾,看看你是否在'localhost /' –