Apache和mod_rewrite:将域重定向到子目录

Obi*_*obi 5 apache mod-rewrite

(我知道这不是一个编程问题本身,但它涉及正则表达式,所以至少它是边界...)

设置:

在Windows上使用mod_rewrite的Apache 2.0.两个域,我们称之为domain1.example和domain2.example.我想在同一台服务器("server1")上托管这两个域,所以我将它们指向同一个IP地址.

现在,如果用户在他的浏览器中键入"domain2.example",我希望他最终位于服务器上的子目录**中,但保留他输入的域名("domain2.example/domain2 /").当然,重定向必须保留此域/目录下的页面上的所有绝对和相对链接.

这是可能的mod_rewrite(或Apache虚拟主机或其他方法),我该怎么做?

**在这种情况下,"子目录"实际上不是磁盘上的文件夹,而是使用Apache"Location"指令创建的虚拟文件夹.

谢谢.

Bil*_*ser 6

我假设您无法访问Apache配置,否则,是的,虚拟主机是您的最佳选择.但是,如果不这样做,可以将其放在.htaccess文件中,并且应该这样做:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.+)\.yourwebsite\.com$
RewriteRule ^/(.*)$ /path/to/your/subdomains/%1/$1 [L]
Run Code Online (Sandbox Code Playgroud)

所以要求http://foo.yourwebsite.com/bar/path/to/your/subdomains/foo/bar


Dan*_*ane 2

我不认为您需要使用 mod_rewrite,您应该能够像您建议的那样使用虚拟主机。为此,您将拥有一个服务器名为domain2.example的虚拟主机,它指向您想要的目录。这还将使用 domain1.example 的 ServerAlias 指令,因此对此的请求将转到同一目录。

请参阅ServerAliasDocumentRoot的文档。另请注意,如果您希望目录显示在 URL 中,则需要使用 mod_rewrite。