2

アクション「メイン」を持つコントローラー「標準」があるとしましょう。

www.myapp.com/standard/main にアクセスすると、標準コントローラーでメイン アクションが呼び出されます。

URL を変更したい場合は、routes.php に入り、次のように sth を設定します。

$route['welcome'] = "標準/メイン";

これで www.myapp.com/welcome にアクセスすると、同じアクションが呼び出されます。

ただし、www.myapp.com/standard/main にアクセスすることは引き続き可能です。これで、同じコントローラー アクションにつながる 2 つのルートができました。

これは通常の方法ですか、それとも不要になった www.myapp.com/standard/main ルートを無効にする必要がありますか? もしそうなら、どうすればいいですか?

前もって感謝します。

4

2 に答える 2

1

デフォルトの動作を決定するのは完全にあなたです。元の URL を無効にする場合は、次のように記述できます。

$route['standard/main'] = 'standard/404';

または任意のカスタムの場所。プロジェクトと、どのように表示したいかによって異なります。たとえば、任意のメソッドが直接アクセスされるのを「ブロック」できます。

$route['standard/(:any)'] = 'standard/404';

ただし、あなたがしたようにルーティングする場合、関数が異なる値を表示する$route['welcome'] = "standard/main";ことを常に覚えておく必要があります。たとえば、URL yoursite.com/welcome/123に移動すると、の値は元の URL yoursite.com/standard/main/123にアクセスすると、値が に変わります。$this->uri->segment(n)$this->uri->segment(2)123main

それを念頭に置いて、自分で決めてください!

于 2012-10-11T10:12:05.040 に答える
1

これが使用する一般的な構造であると仮定すると、アクションごとに、URL 内のセグメントを確認し、適切にリダイレクトできます。からwelcomeに移行する場合standard/mainは、次のようになります。

class Standard extends CI_Controller {

    public function main() {
        if($this->uri->segment(1) == 'standard') {
            redirect('welcome', 'location', '301');
        }
    }

}

これにより、URL の最初のセグメントがチェックされ、この URL に到達したことがわかった場合は、適切なルートにリダイレクトされます。これは、同じことをしたい各アクションに適用できます。301 を指定すると、恒久的なリダイレクトが行われます。

アップデート

同様の (同じ?) 質問が見つかりました:ルートで指定された URL のみを Codeigniter で表示できるようにする

于 2012-10-11T10:16:59.350 に答える