(我知道这不是一个编程问题本身,但它涉及正则表达式,所以至少它是临界...)
设置:
在Windows上使用mod_rewrite的Apache 2.0。两个域,我们称之为domain1.example和domain2.example。我想在同一台服务器(“server1”)上托管这两个域,所以我将它们指向同一个IP地址。
现在,如果用户在他的浏览器中键入“domain2.example”,我希望他最终在服务器上的子目录**中,但保留他输入的域名完整(“domain2.example / domain2 /”) 。当然,重定向必须保留此域/目录下页面上的所有绝对和相对链接。
这可能与mod_rewrite(或Apache虚拟主机或其他方法)有关,我该怎么做?
**在这种情况下,“子目录”实际上不是磁盘上的文件夹,而是使用Apache“Location”指令创建的虚拟文件夹。
感谢。
答案 0 :(得分:6)
我假设您无权访问Apache配置,否则,是的,虚拟主机是您的最佳选择。但是,如果不这样做,可以将其放在.htaccess文件中,并且应该这样做:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.+)\.yourwebsite\.com$
RewriteRule ^/(.*)$ /path/to/your/subdomains/%1/$1 [L]
因此http://foo.yourwebsite.com/bar
的请求会转到/path/to/your/subdomains/foo/bar
答案 1 :(得分:3)
假设这些域是独立的,建议的解决方案是虚拟主机。
您可以在apache website找到文档。
答案 2 :(得分:2)
我不相信你需要使用mod_rewrite,你应该可以像你建议的那样使用vhosts。为此,您将拥有一个带有servername domain2.example的vhost,它指向您想要的目录。这也将使用domain1.example的ServerAlias指令,因此对此请求将转到同一目录。
请参阅ServerAlias和DocumentRoot的文档。另请注意,如果您希望目录显示在URL中,则将需要使用mod_rewrite。