我在 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 的东西。
重定向完美无缺,网址仍然是 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]
但是调用 codeigniter 默认控制器而不是城市控制器中的 foo 方法。
任何帮助表示赞赏。