使用重写引擎将域名路由到一个 DocumentRoot 上的路径

使用重写引擎将域名路由到一个 DocumentRoot 上的路径

我有两个域:

domain1.com
domain2.com

我有一台 Apache 2 服务器,带有一个文档根目录/svr.

我希望发生以下情况:

  • domain1.com相当于/svr/examplepath/thisisadir/param/domain1
  • domain2.com相当于/svr/examplepath/thisisadir/param/domain2

我尝试过使用.htaccessRewriteEngine,在/svr,每个主机名的可用站点中使用 VirtualHost 声明,并简单地使用 301 重定向。但是,我不能使用简单的 301,因为用户仍应domain1.com在其浏览器中看到。

domain1.com/about-this-site应该映射到/svr/examplepath/thisisadir/param/domain1/about-this-site.

我无法让 RewriteEngine 将主机名路由到其各自的端点,任何建议都将不胜感激。我目前正在尝试HTTP_HOST.htaccess服务器根目录中使用,但重写规则仍然没有生效。

伊尔米翁特

答案1

停止使用 .htaccess 和 RewriteEngine,而是查看名为“VirtualHost”的 apache 指令:

http://httpd.apache.org/docs/current/vhosts/name-based.html

这是他们要解决的问题。Apache 会将传入的 Host: 标头与 VirtualHost 块中的 ServerName 指令进行匹配,并应用匹配 VirtualHost 的配置。每个 VirtualHost 都可以有自己的 DocumentRoot。

以下可以作为解决方案的骨架:

 <VirtualHost *:80>
   ServerName domain1.com
   DocumentRoot /svr/examplepath/thisisadir/param/domain1
   # other configuration here
 </VirtualHost>
 <VirtualHost *:80>
   ServerName domain2.com
   DocumentRoot /svr/examplepath/thisisadir/param/domain2
   # other configuration here
 </VirtualHost>

相关内容