vhost_alias_module domain.com 不会转到 www.domain.com

vhost_alias_module domain.com 不会转到 www.domain.com

我使用以下配置来使用 vhost_alias_module 更轻松地管理我的托管设置。我希望网站的结构类似于以下 /sites/domain.com/w/w/w/,使用以下配置可以正常工作。但是,如果我尝试访问 domain.com 而不是 www.domain.com,就会崩溃。我该如何解决这个问题?

更新:我希望 domain.com 的请求自动定向到 www.domain.com。如果这需要 403 重定向就好了(我认为从 SEO 角度来看这是更好的选择)。

LoadModule vhost_alias_module /usr/lib/apache2/modules/mod_vhost_alias.so
<VirtualHost *:80>
        ServerAdmin [email protected]

        DocumentRoot /sites/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /sites/>;
                Options Indexes FollowSymLinks MultiViews ExecCGI
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
    UseCanonicalName Off
    VirtualDocumentRoot /sites/%2+/%1.1/%1.2/%1.3+

</VirtualHost>

答案1

好吧,暗示的要求www几乎让你无法使用 mod_vhost_alias,而进入 mod_rewrite 领域。但我能想到几个选择:

  1. 只需重定向至www

    RewriteEngine on
    # Match anything with a two-part name
    # (will not work for 3-part base domains that would need to redirect to www, be careful)
    RewriteCond %{HTTP_HOST} ^([^\.]+\.[^\.]+)$
    # Redirect
    RewriteRule ^/(.*)$ http://www.%{HTTP_HOST}/$1 [R=301]
    
  2. 让这些请求无需重定向即可工作,并使用符号链接技巧将它们粘贴到 www 位置。

    根据你们的VirtualDocumentRoot要求,让我们domain.com来改变这一点:/sites/com/d/o/m

    VirtualDocumentRoot /sites/%-2+/%-3.1/%-3.2/%-3.3+
    

    domain.com这将发出转到的请求/sites/domain.com/_/_/_- 将此位置设为到的符号链接/sites/domain.com/w/w/w

相关内容