example.com/ci に codeigniter をインストールしています。サブドメイン foo.example.com があります。foo サブドメインのドキュメント ルートは、home/public_html/ci に設定されています。
.htaccess で次のルールを使用して、foo.example.com のリクエストを example.com/ci/city/foo に送信しています。
RewriteCond %{HTTP_HOST} !^(www)\. [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com [NC]
RewriteRule (.*) http://example.com/ci/city/%1/$1 [L]
アドレスバーの URL が foo.example.com から example.com/ci/city/foo に変わることを除けば、すべて思いどおりに機能します。foo.example.com のままにしたいと思います。RewriteRule に R=301 はありません (以前はありましたが削除しました)。.htaccess ファイルは ci/ フォルダーにあり、ルールはすべての codeigniter のものの上にあります。
リダイレクトは完全に機能し、URL は foo.example.com のままです (Jon Lin の回答)
RewriteCond %{HTTP_HOST} !^(www)\. [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.example\.com [NC]
RewriteCond %{REQUEST_URI} !/city/
RewriteRule (.*) /city/%1/$1 [L]
ただし、シティ コントローラーの foo メソッドの代わりに codeigniter デフォルト コントローラーが呼び出されます。
どんな助けでも大歓迎です。