1
私はスーパーシンプルなフレームワークを構築しようとしています。私はconstrollersを使用したくない...基本的にすべてがうまくいく、これは簡単なWebサイトの素晴らしいスタートですが、私は問題があるもう一つの機能が欲しいです。symfonyのルートからリダイレクトされたシンプルなフレームワーク301
私は可能な限り単純な解決策を得て、ルートページに301のリダイレクトを追加します。たとえば、301/http://facebook.com/exampleの/ facebookが必要です。ここで
はindex.phpを以下の...私のコードです:
<?php
require_once __DIR__.'/../vendor/autoload.php';
$dotenv = new Dotenv\Dotenv(__DIR__.'/../');
$dotenv->load();
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing;
$request = Request::createFromGlobals();
$routes = include __DIR__.'/../routes/web.php';
$context = new Routing\RequestContext();
$context->fromRequest($request);
$matcher = new Routing\Matcher\UrlMatcher($routes, $context);
try {
extract($matcher->match($request->getPathInfo()), EXTR_SKIP);
ob_start();
include sprintf(__DIR__.'/../resources/views/%s.php', $_route);
$response = new Response(ob_get_clean());
} catch (Routing\Exception\ResourceNotFoundException $e) {
$response = new Response();
$response->setStatusCode(404);
include __DIR__.'/../resources/views/errors/404.php';
} catch (Exception $e) {
$response = new Response();
$response->setStatusCode(500);
include __DIR__.'/../resources/views/errors/500.php';
}
$response->send();
そして、私のroutes.phpのコード:
<?php
use Symfony\Component\Routing;
$routes = new Routing\RouteCollection();
// 200
$routes->add('index', new Routing\Route('/'));
$routes->add('index', new Routing\Route('/about'));
$routes->add('index', new Routing\Route('/contact'));
// 301
// redirect from /facebook to -> http://facebook.com/example
// redirect from /twitter to -> http://twitter.com/example
return $routes;
今私はちょうどのためのようにそのルートの特定のファイルを作ることができます他の人とそのファイルの中で私はヘッダのPHPリダイレクトを追加することができます...しかし、これは面倒なアプローチです。ルート内のリダイレクトを直接定義するにはどうすればよいですか?あなたは次の操作を行うことができますあなたの場合は
はsymfony /フレームワーク・バンドルそれは大きなパッケージです。私はsymfony/http-foundationとsymfony/routingしか持っていませんがもう1つはOKですが、symfony/framework-bundleのものはすべて良い考えではありません。 Btw。それは私のtryメソッドでindex.phpで動作しますか?私はそうは思わない。 – Krystus
はい、これは基本的に呼び出し可能な関数で動作します。 – yceruto
警告:include(/home/vagrant/Web/example.com/public/../resources/view/twitter.php):ストリームを開くことに失敗しました:/ home/vagrant/Web/exampleにそのようなファイルやディレクトリはありません。 com/public/index.php on line 22 – Krystus