0

ここで皆さんに奇妙な質問です。既存のサイトで、サイトのメイン CMS として wordpress が実行されている状況があります。URL 構造などのために WP で実装できない追加のコードがいくつかあるため、CI をサイトに配置したいと考えています。同じホスト。

ただし、そのサイトの CI には 2 つのエントリ ポイントが必要になる可能性があります - それらを /userside と /adminside と呼びましょう

アクセス可能な同じフォルダー スペースにある同じアプリケーション フォルダーとシステム フォルダーを両方で共有したいと考えています。

/userside を WP と共存させるのは非常に簡単です。

ここに.htaccessファイルがあります

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^/userside [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /userside/index.php [L]

RewriteRule ^/adminside [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /adminside/index.php [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

私のフォルダレイアウトは次のとおりです

FTP ROOT/
    ci/ <- codeigniter root
      application/
      system/
    http/
      index.php <- WP index.php
      adminside/
        index.php <- CI index.php
      userside/
        index.php <- CI index.php
      ... wp-content etc

ユーザー側のファイルを管理側にコピーし、シンボリックリンクも試しましたが、どちらも機能しません。

CI の application/config で、base_url を次のように変更しました。

list($_trash, $_base, $rest) = explode('/', $_SERVER['REQUEST_URI'], 3);
$config['base_url']     = "http://".$_SERVER['HTTP_HOST']."/".$_base;

つまり、URI の最初のセグメントがアプリケーション ベースとして自動的に配置されます。このコードをデバッグしたところ、正しく設定されました。

/userside/somecontroller にアクセスすると機能しますが、/adminside/somecontroller にアクセスすると機能しません。404ページが表示されます。

/adminside にアクセスするだけで、デフォルトのコントローラーの index() 関数にアクセスできるようになります。これは機能しますが、コントローラーとメソッドを指定すると機能しません。

例えば:

http://www.mysite.com/userside/mycontroller/mymethod <- 動作し ます http://www.mysite.com/userside/mycontroller/mymethod <- 動作しません - 404 が表示されます

/userside が最初にセットアップされましたが、CI を /userside に結び付ける場所は application/config/config.php 以外には見当たりません。

アクセス許可が確認され、同一であり、所有者も同一です。

なぜこれが機能しないのか、誰にもわかりませんか?特定の理由があるため、サイトをサブドメインに分割する必要はありません。また、/userside で機能するため、/adminside も機能させないようにする単純なものしかありません。

4

2 に答える 2

1

RewriteRuleindex.php を取り除き、メソッドを追加する必要があります。

<IfModule mod_rewrite.c>
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/userside(.*)$   /userside/index.php$1 [L]
    RewriteRule ^/adminside(.*)$  /adminside/index.php$1 [L]
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
于 2012-11-14T14:15:28.383 に答える
0

これは私が思っていたよりも少し複雑ではありませんでした。

CI を実行するサブフォルダーに CI の .htaccess を配置し、適切なサイト URL 変数を一致するように設定するだけです。

CI の index.php の WP 側のルートから wp-load.php をロードするだけで、CI から WP のすべてのライブラリにアクセスできるようにする方法を示すドキュメントを見つけました。

これが他の人に役立つことを願っています。

于 2013-01-18T19:18:40.337 に答える