我正在使用下面的configuration来使用vhost_alias_module来更轻松地pipe理我的托pipe设置。 我希望网站的结构如下面的/sites/domain.com/w/w/w/与下面的configuration工作正常。 但是,如果我尝试访问domain.com而不是www.domain.com,则会崩溃。 我该如何解决?
更新 :我想请求domain.com自动被引导到www.domain.com。 如果这需要一个403redirect(我认为这将是从search引擎优化的angular度来看更好)。
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>
那么,暗示www的要求接近推动你能够使用mod_vhost_alias,并进入mod_rewrite领土..但有几个选项,我可以想到的:
只需redirect到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]
让这些请求在没有redirect的情况下工作,并使用符号链接技巧将它们粘贴到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的符号链接。