0

URI に基づいて、データベースから生成されたページがあります。routes本来の機能ですが、URLからコントローラーと機能を削除するように設定することはできません。

$route['studios/(:any)'] = 'studios/location/$1';

現在、コントローラー名と URI 変数 (それが何であれ) を表示するルートがあります。ただし、コントローラー名も削除して、URL として呼び出される URI 変数のみを表示したいと考えています。説明が難しい - うまくいけば、誰かが私のドリフトを拾います...

現在の URL は次のようになります。domain.com/studios/studio1

しかし、私はただ表示したい:domain.com/studio1

を試し$route['/(:any)'] = 'studios/location/$1';ましたが、サイト全体が台無しになっています。

ヘルプ?

4

2 に答える 2

1
$route['studios(/:any)*'] = 'studios/location';

studiosこのルートはon から までのすべてを強制しますstudios/location。その後、URI セグメントを使用して任意のパラメーターにアクセスできます。

$id = $this->uri->segment(2);

URL がsomewhere.com/studios/location/2の場合は、次の$idように解決されます2

ただし、ルートからだけにしたいので、オーバーライド ルートをルート ファイルの最後に配置して、最後に評価されるようにする必要があります。

// all other routes here. Which must be specifically 
// defined if you want a catch all like the one you mentioned
$route['(:any)'] = 'studios/location';

または、メンテナンスの多いサイトが必要な場合は、次のようにルートのコレクションを指定できます。

$route['(studio1|studio2|studio3)'] = 'studios/location/$1';
于 2013-10-02T23:07:43.527 に答える
0

「あなたのサイトを台無しにする」のはどうですか?

いずれにせよ、(:any) の前に / を付けるべきではありません。

ただ:

$route['(:any)'] = 'studios/location/$1';

編集:

$route['(:any)'] の前に、すべてのコントローラーからのルートを指定する必要があります。これはごく普通のことです。「高度なメンテナンス」と呼ぶかどうかはわかりませんが、判断する必要があります。

于 2013-10-02T22:56:05.043 に答える