8

私はウェブページのプロジェクトに取り組んでいます。この目的のために、Apache、PHP (5.1.7、サービス プロバイダーによって課されたバージョン)、および Dwoo (テンプレート) を使用することにしました。

URL をテンプレートにルーティングしたいと考えています。この種のことを行うフレームワークがたくさんあることは承知しています。せずにそれを達成する良い方法があるかどうか疑問に思っています。

次のようにプロジェクトを設定しました。

  • src/dwoo - Dwoo ファイル
  • index.php - ルーティングを処理する必要があります。現在、テンプレートを使用してサイトのフロント ページをレンダリングするだけです。
  • テンプレート - 実際のページを表すテンプレート。

最小限のビジネス ロジックがあります (実際のモデルはありません)。それはすべてかなり静的なページです。テンプレートを使用すると、保守作業が容易になります (継承など)。

この場合、ルーティングを設定する方法はありますか? 理想的には、指定された各 URL が index.php 経由でルーティングされ、レンダリングするテンプレートが何らかの方法で決定されると思います (つまり、/category/pagename は templates/category/pagename.tpl にマップされます)。

4

3 に答える 3

10

mod_rewriteすべてを 1 つのファイルにルーティングするために使用しindex.phpます。次に、このファイル内の変数をチェックし$_SERVER['REQUEST_URI']て、必要なハンドラーにディスパッチします。

mod_rewriteインストールされている場合、この構成により が有効になります。

DirectorySlash Off
Options FollowSymLinks Indexes
DirectoryIndex index.php

RewriteEngine on

RewriteCond %{REQUEST_FILENAME}  -d
RewriteRule  ^.*$  -  [L]

RewriteCond %{REQUEST_FILENAME}  -f
RewriteRule  ^.*$  -  [L]

RewriteRule ^.*$    index.php [L]
于 2011-05-23T10:28:53.113 に答える
2

trolskn (+1) の説明のように:

mod_rewriteすべてを 1 つのファイルにルーティングするために使用しindex.phpます。次に、このファイル内の変数をチェックし$_SERVER['REQUEST_URI']て、必要なハンドラーにディスパッチします。

しかし、私は次のものを見つけました(それ以降のすべてを「消費」する必要が.htaccessあるフォルダーに配置されています)。index.php

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

また、メッセージが表示される可能性があることにも注意してください。

.htaccess: Invalid command 'RewriteEngine', perhaps misspelled
or defined by a module not included in the server configuration

sudo a2enmod rewrite && sudo service apache2 restartこれは( source )で簡単に解決できます

于 2015-05-22T16:47:41.750 に答える
1

PEARのNet_URL_Mapperを使用することをお勧めします。

于 2011-05-23T17:53:59.083 に答える