ここで皆さんに奇妙な質問です。既存のサイトで、サイトのメイン 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 も機能させないようにする単純なものしかありません。