簡単です:)
これはすべてapache module mod_rewriteに基づいています。このモジュールでは、.htaccessファイルのパス動作を変更できます。あなたは次の動作を取得します。この.htaccessファイル
RewriteEngine On
# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
# The following rewrites all other queries to index.php. The
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting, the base path will be prepended to
# allow proper resolution of the index.php file; it will work
# in non-aliased environments as well, providing a safe, one-size
# fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::$
RewriteRule ^(.*)$ - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
を使用して
:要求されたファイルが存在する場合
- を(/styles/style.css - スタイル、JavaScriptの、イメージなど)は、それを提供します(現在の動作で何も変更しないでください)
- 要求されたファイルが存在しない場合は、index.phpにアクセスしてください。
あなたがindex.phpにリダイレクトされる場合は、$ _SERVER [ 'REDIRECT_URL']または$ _SERVER [ 'REQUEST_URI']にフル要求されたURLを見つけることができます。あなたがそれを受け取り、要求されたURIに基づいて解析し、行動することができます。
これを説明記事として、これをどうやって取得するかについてのガイドではありません。ほとんどの場合、mod_rewriteはデフォルトでほとんど無効になっているため、いくつかのApache設定が必要です。
状況を改善したい場合は、this postをお勧めします。
は完全にあなたの質問に答えるために、あなたはたとえば、「/」記号でリクエストURIを爆発$ FIRSTPARTに第二$ SECONDPARTに最初の部分を保存して、あなたが/助けを呼ぶのであれば
$controllerName = $firstPart."Controller";
$controller = new $controllerName;
$actionName = $secondPart."Action"
$response = $controller->$actionName();
を持つことができます/ me、helpController-> meAction()が呼び出されます。
私は助けて欲しいと思っています:)
PHPでクラスメソッドを呼び出す方法について質問していますか?重複のように聞こえます:http://stackoverflow.com/questions/15499513/php-call-class-method-function –
MyControllerクラスのPathActionメソッドとして/ my/pathを扱うデフォルトのフレームワークルーターについて話していますか?そして、あなたはプレーンなPHPでこれを行う方法を知りたいですか? –
@マグヌス、それは私が求めている質問ではありません。それはワックスが言ったようなものです。 – Pravin