基于部分URL的Apache重定向

时间:2016-03-19 12:26:13

标签: apache redirect

我想在一台apache服务器上运行2个站点,但没有固定域名,所以基本上想要任何带有“site2”字样的网址中的任何内容都会重定向到/ site2文件夹...例如

http://wordssite2.blah.com -> /var/www/html/site2/index.html http://wordssite2.blah2.com/index.html -> /var/www/html/site2/index.html http://wordssite2.foo.com/gallery.html -> /var/www/html/site2/gallery.html http://wordssite1.blah.com/gallery.html -> /var/www/html/gallery.html

我是apache的新手,并且不知道是使用重定向规则还是使用VirtualHosts来执行此操作。 Redirect似乎支持通配符,VirtualHosts似乎想要一个固定的域名。

1 个答案:

答案 0 :(得分:0)

以下配置应放在包含" site2"的域的vhost文件中:

<VirtualHost *:80>

        DocumentRoot /var/www/html/site2/
        ServerAlias *site2*

        RewriteEngine On
        RewriteCond %{HTTP_HOST} "site2"
        RewriteRule ^(.*)$ $1

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

ServerAlias指令用于告诉apache处理包含单词&#34; site2&#34;的请求。并应用此特定的vhost配置。

RewriteCond指令将检查传入请求的域名是否包含&#34; site2&#34;。服务器变量HTTP_HOST返回HTTP请求标头中收到的域名。

如果是,RewriteRule将提供来自&#34; / var / www / html / site2&#34;的请求。文件夹(在DocumentRoot指令中提到)并附加由$1参数提取的URI。

注意:

  1. 您必须先在Apache上启用mod_rewrite才能使此配置生效。

  2. 您应该为&#34; site2&#34;设置正确的DNS记录。域并将流量引导到您的服务器。