Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess htaccess-使用查询字符串将子域请求重写到文件夹_.htaccess_Subdomain_Rewrite - Fatal编程技术网

.htaccess 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

我正在尝试使用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规则,但我想在这些规则生效之前,应该先进行重写

任何帮助都将不胜感激

以下规则集应执行所需的重写:

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
标志的解决方案也不错;我只是避免这样做,因为它有创建一个全新的请求作为代理的一部分的开销。诚然,如果您的服务器没有受到压力,那么这不是问题。