htaccess - 使用查询字符串将子域的请求重写到文件夹

时间:2010-08-31 19:44:42

标签: .htaccess subdomain rewrite

我正在尝试使用Apache htaccess文件进行子域重写,并需要一些帮助。

我正在尝试获取 http:// xyz .example.com 内部处理的请求,就好像用户已请求 http://example.com/ xyz 因此用户在其地址栏中看不到此网址 - 他们会看到子域版本。

由于此之后的任何内容也需要传递,例如用户请求 http:// xyz ,这有点复杂。 example.com/test/word/?x=123 然后这需要由服务器处理,就好像他们已经访问过 http://example.com/ xyz /测试/字/ X = 123

该网站正在Code Igniter框架上运行,该框架也有自己的htaccess规则,但我想这些重写将在这些重写之前完成。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

以下mod_rewrite规则集应执行您需要的重写:

RewriteCond $0 !^(index\.php/)?xyz
RewriteCond %{HTTP_HOST} ^xyz\.
RewriteRule ^.*$ /xyz/$0 [L]

查询字符串会自动传递,因为我们在重写时没有更改它。

为了让CodeIgnitor选择此更改,您需要使用PATH_INFO作为路由信息的来源。您需要将$config['uri_protocol']设置为PATH_INFOAUTO,并且您的CodeIgnitor RewriteRule应如下所示:

RewriteRule ^.*$ /index.php/$0

如果您在尝试使用PATH_INFO时遇到问题,则需要找到一种方法让CodeIgnitor解析$_SERVER['REDIRECT_URL'](并将L标志添加到第一个RewriteRule 1}}在那里)。希望这不是必要的,但如果你不能让它工作,否则我会研究你如何做到这一点。