0

解決できないような興味深い問題があります。その URL へのすべてのリクエストを (別のサーバー上の nginx 経由で) 私の Codeigniter アプリ (別のサーバー上に存在する) にルーティングするように設定された URL があります。たとえば、URL は次のようになります。

http://www.site.com/myappname/controller/function/parameter

Codeigniter の通常の状態では、末尾のスラッシュの後の最初の要素をコントローラー クラスにルーティングし、次に 2 番目をクラス内の関数にルーティングし、3 番目/etc をその関数のパラメーターとしてルーティングします。

私がする必要があるのは、URL の「myappname」を無視し、それなしで URL を介して送信することです。「myappname」はサーバー上のフォルダーではありません。

新しい HTACCESS ルールを追加する必要があるかどうか、またはこれを Codeigniter を介してプログラムで実行できるかどうかは、100% わかりません。

私の現在のHTACCESSファイル:

RewriteEngine on

RewriteCond $1 !^(index\.php|sitemap\.xml|robots\.txt|public|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]

これは、すべての Codeigniter アプリの基本的で単純な HTACCESS セットアップですが、これを使用し、上記の構造を使用して、http://www.site.com/myappnameにアクセスすると、「http://www .site.com/myappname" を Codeigniter 構成で my base_url として設定すると、Codeigniter はそれを次のように変換します。

http://www.site.com/myappname/myappname

それで...誰か助けてくれますか?また、config/routes.php ファイルの先頭に次のコードを追加しようとしました。

$_SERVER['REQUEST_URI'] = str_ireplace('/verified', '', $_SERVER['REQUEST_URI']);

それは実際には部分的に機能しますが、ルートから CSS/JS ファイルを要求すると、組み込みの site_url() 関数を使用してサイトの「base_url」プロパティに基づいて動的リンクを構築するため、それらが正しく取り込まれません。CSS/JS/etc がアプリのルートにある /public フォルダーに存在するため (RewriteCond を介したルーティングから明らかに除外されているため)、これを Codeigniter 内で (システム レベル関数を上書きすることによって) プログラムで 100% 実行できるとは思いません。 .

誰にも提案がありますか?

4

1 に答える 1

0

に a を追加してみRewriteBaseてくださいhtaccess:

RewriteEngine On
RewriteBase /myappname/
RewriteCond $1 !^(index\.php|sitemap\.xml|robots\.txt|public|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
于 2013-01-16T18:04:28.993 に答える