.htaccess htaccess-使用查询字符串将子域请求重写到文件夹
我正在尝试使用ApacheHTAccess文件进行子域重写,需要一些帮助 我正在尝试获取对http://xyz的请求。example.com的内部处理方式与用户请求的方式相同http://example.com/xyz因此用户不会在地址栏中看到此URL-他们会看到子域版本 这有点复杂,因为下面的任何内容也需要传递,例如,如果用户请求http://xyz.example.com/test/word/?x=123,则服务器需要像访问过一样处理此问题http://example.com/xyz/test/word/?x=123 该站点运行在CodeIgniter框架上,该框架也有自己的htaccess规则,但我想在这些规则生效之前,应该先进行重写 任何帮助都将不胜感激 以下规则集应执行所需的重写:.htaccess htaccess-使用查询字符串将子域请求重写到文件夹,.htaccess,subdomain,rewrite,.htaccess,Subdomain,Rewrite,我正在尝试使用ApacheHTAccess文件进行子域重写,需要一些帮助 我正在尝试获取对http://xyz的请求。example.com的内部处理方式与用户请求的方式相同http://example.com/xyz因此用户不会在地址栏中看到此URL-他们会看到子域版本 这有点复杂,因为下面的任何内容也需要传递,例如,如果用户请求http://xyz.example.com/test/word/?x=123,则服务器需要像访问过一样处理此问题http://example.com/xyz/tes
RewriteCond $0 !^(index\.php/)?xyz
RewriteCond %{HTTP_HOST} ^xyz\.
RewriteRule ^.*$ /xyz/$0 [L]
查询字符串会自动传递,因为我们在重写过程中没有更改它
但是,对于CodeIgnitor,您需要使用PATH\u INFO
作为路由信息的来源。您的$config['uri\u protocol']
需要设置为PATH\u INFO
或AUTO
才能实现这种情况,并且您的CodeIgnitor重写规则应如下所示:
RewriteRule ^.*$ /index.php/$0
如果您在尝试使用PATH\u INFO
时遇到问题,您需要找到一种方法让CodeIgnitor解析$\u服务器['REDIRECT\u URL']
(并将L
标志添加到第一个重写规则
)。希望这不是必需的,但是如果你不能让它工作,否则我将研究你如何做。使用[QSA]
在站点根目录或xyz
中通过get parametersIs Codeigniter?Hi Tim-code igniter在站点根目录中。我创建了一个子域,其中包含一个a记录,该记录指向与此根域相同的IP Hi Pekka-这听起来像是我需要的,但我不确定如何使用ITI Tim,感谢您的关注。然而奇怪的是,我得到了一个403禁止的错误,尽管设置了路径信息。错误日志中显示“文件名太长:无法将GET/HTTP/1.1映射到文件”。CI重写规则看起来确实略有不同,但即使将其更改为您的规则,它仍然不起作用。好消息是,在此期间,我的一位同事也在试验它——我们都在努力让它发挥作用并且现在已经成功地使用RewriteCond%{HTTP_HOST}^xyz\.example\.com$[NC]RewriteRule^(.*)$[P]Thanks@GSA-是的,那是因为我没有考虑在密码改写后发生了什么。为了完整起见,我已经更新了答案以修复该场景。您的同事使用P
标志的解决方案也不错;我只是避免这样做,因为它有创建一个全新的请求作为代理的一部分的开销。诚然,如果您的服务器没有受到压力,那么这不是问题。