6

モバイル サイトを運営する方法を模索中です。CodeIgniter に Web アプリがあり、そのモバイル バージョンを作成したいと考えています。ただし、特にモデルではなく、あまり多くのコードを書き直したくありません.. (どこでも使用できる生データを返すため)。

サブドメイン ( ) でモバイル Web サイトを運営したいと考えていますm.mydomain.tld。デスクトップ バージョンは で実行されwww.mydomain.tldます。サブドメインを CI アプリケーション フォルダーに指定しようとしました。モバイル ブラウザが に到達するとwww.mydomain.tld、 にリダイレクトしm.mydomain.tldます。前述のとおり、このサブドメインは私の CI アプリケーション フォルダーを指しています。次に、モバイル向けに最適化されたコントローラーとビューを提供します。

でも!で指定されapp/config/config.phpているように、アプリケーションの base_url は次のとおりです。

$config['base_url'] = 'http://www.mydomain.tld/';

そのため、リダイレクトは実際にm.mydomain.tldは機能しません。なぜなら、リダイレクトされたままにwwwなり、それを望んでいないからです。

私がこれを解決しようとしている方法は、異なるコントローラー/ビューを持つ2つのアプリケーションフォルダーを作成することですが、モデルなどを共有しています. controller' (MY_Controller)、および異なるアプリケーション間のいくつかのカスタム ライブラリ/ヘルパー。

これが明確であることを願っています。そうでない場合は、私が探しているものを喜んで説明します。どうもありがとう!

4

3 に答える 3

3

おそらく、codeIgniter の 2.0 の新機能であるパッケージを見てください。

パッケージを使用すると、ライブラリ、モデルなどを次のように共有できます。

$this->load->add_package_path('/usr/local/codeigniter/shared');

これを読んでください: http://philsturgeon.co.uk/blog/2010/04/codeigniter-packages-modules

それが役に立てば幸い。

于 2011-05-12T17:16:28.533 に答える
2

この問題を解決する正しい方法は、既存の Web アプリで新しいコントローラーとビュー (モバイル向け) のセットを作成することだと思います。次に、新しい「モバイル」コントローラーのルートを定義するだけです (ルートごとに「m/」または「mobile/」プレフィックスも追加する必要があるかもしれません)。それだけです。

アップデート:

なるほど、分かりました。次のようにすることをお勧めします。

  1. まず、config.php に次のレコードを作成します。

    $config["mobile_base_url"] = "http://m.yoursite.tld/";
    
  2. 次に、url_helper を作成し、mobile_site_url() 関数を追加します。これは、CI の site_url() 関数に類似したものになります (ビューとコントローラーのリンクに必要になります)。

  3. モバイル ビューとコントローラーを作成し、それらのルートを "m/" プレフィックスで定義します。

  4. このフォーラム ページhttp://www.webmasterworld.com/apache/3509887.htmで説明されている URL 書き換え用の .htaccess ハックを少し実行して、m.yoursite.tld/... へのすべてのリクエストが yoursite.tld に送信されるようにします。 /m/...

このアプローチではいくつかの問題が発生すると思いますが、問題のために別の CI アプリを作成するべきではありません。

お役に立てれば。

于 2011-05-12T13:11:19.290 に答える
2

config.php を次のように置き換え$config['base_url'] = 'http://www.mydomain.tld/';ます。

if(isset($_SERVER['HTTPS']) and 'on' === $_SERVER['HTTPS']) {
    $config['base_url'] = 'https://';
} else {
    $config['base_url'] = 'http://';
}
$config['base_url'] .= $_SERVER['SERVER_NAME'] . '/';

これにより、Apache/server 環境変数から URL が取得されるため、サブドメイン経由でサイトにアクセスする場合はサブドメイン URL が使用され、ルート ドメイン経由でアクセスする場合はルート ドメインが使用されます。

私は CI の専門家ではないので、他の方法があるかもしれませんが、これが私が知っている最も簡単な解決策です。

于 2011-05-12T13:23:34.553 に答える