0

可能かどうかはわかりませんが、必要なのはデフォルトをロードすることでcontrollerありaction、指定された場合controllerは から見つからなかったurlので、次の URL があるとします。

http://mywebsite.com/john

userコントローラーとselected_userアクションを呼び出す必要があります。

そして、もし私がURLを持っているならhttp://mywebsite.com/pages/profile

コントローラーとアクションの両方が指定され、検出されているため、pagesコントローラーとアクションを呼び出す必要があります。profile

それを行う方法はありますか?

私は使っているKohana 3.2

編集ここに私のhtaccessがあります:

# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /ep/

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]

/ep私のディレクトリhtdocsも私の中に設定'base_url' => '/ep/',しましbootstrap

4

1 に答える 1

1

mod_rewriting が有効で、.htaccess ファイルが正しく構成されていると仮定します。必要なことは、現在のデフォルトのルートの後に、ブートストラップ内で新しいルートを指定することだけです。

例えば:

<?php

  Route::set('default', '(<controller>(/<action>(/<stuff>)))', array('stuff' => '.*'))
    ->defaults(array(
        'controller' => 'welcome',
        'action' => 'index',
  ));

  /** Set a new route for the users **/
  Route::set(
    "users", "<name>", array("name" => ".*")
  )->defaults(array(
    'controller' => 'users',
    'action' => 'selected_user'
  ));

  /** Within the selected_user method you can then check the request for the "name" 
    validate the user parameter (parhaps against the db) and then again route the correct
    pages/profile if found

    e.g.
  **/

  $username = $this->request->param('name');
  if ($username == "alexp") {
    /** reroute to the users/profile controller with data **/
  }

?>

編集: また、上記のルートはベース Uri の後に呼び出されることを忘れていたので、"http://mysite.com/john" と "http://mysite.com/89s88" もそれを使用しようとします。ルート。時間の経過とともに多くのルートが必要になることが想像できるので、少なくとも最小限の /controller/action の種類に固執するのが最善です。そうしないと、必要のないルートで複雑な正規表現が使用されていることに気付くかもしれません。

于 2012-09-25T11:11:47.490 に答える