mod_rewrite 将子域名重定向到文件夹

mod_rewrite 将子域名重定向到文件夹

可能重复:
将所有子域名重定向至子文件夹

我有一个 WordPress 博客,网址为http://www.orpheecole.com,我想设置 3 个子域名 (cycle1、cycle2、cycle3) 并重定向到各自的文件夹(1 个子域名 = 1 个 wp 博客,未启用多站点)

文件树如下所示:

/var/www/orpheecole.com/
/var/www/cycle1.orpheecole.com/
/var/www/cycle2.orpheecole.com/
/var/www/cycle3.orpheecole.com/

以下 .htaccess 尝试重定向到 /var/www/orpheecole.com/cycleX 而不是其自己的目录,但如果有可能,我宁愿将每个子域重定向到其自己的 www 文件夹。我主站点的 sites-enabled 文件是

# blog orpheecole
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName  orpheecole.com
    ServerAlias *.orpheecole.com

    DocumentRoot /var/www/orpheecole.com/

    <Directory /var/www/orpheecole.com/>
        Options -Indexes FollowSymLinks MultiViews
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog /var/log/apache2/orpheecole.com-error_log
    TransferLog /var/log/apache2/orpheecole.com-access_log
</VirtualHost>

位于 /var/www/orpheecole.com/ 的 .htaccess 如下所示

<IfModule mod_rewrite.c>

  RewriteEngine on
  RewriteCond %{HTTP_HOST} !^www.* [NC]
  RewriteCond %{HTTP_HOST} ^([^\.]+)\.orpheecole\.com$
  RewriteCond /var/www/orpheecole.com/%1 -d
  RewriteRule ^(.*) www\.orpheecole\.com/%1/$1 [L]

  # BEGIN WordPress
  RewriteBase /
  RewriteRule ^index\.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
  # END WordPress

</IfModule>

我尝试删除 wordpress 指令但没有任何变化,并且重写模式已启用并正在运行。

答案1

在 apache 中拥有子域名的最佳方式是使用 vhosts。在 sites-available 中为每个子域名创建一个配置文件,并不要忘记启用它(例如a2ensite cycle1:)

这是 cycle1 的一个例子

# blog orpheecole
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName  cycle1.orpheecole.com
    ServerAlias *.cycle1.orpheecole.com

    DocumentRoot /var/www/cycle1.orpheecole.com

    <Directory /var/www/cycle1.orpheecole.com/>
        Options -Indexes FollowSymLinks MultiViews
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog /var/log/apache2/cycle1.orpheecole.com-error_log
    TransferLog /var/log/apache2/cycle1.orpheecole.com-access_log
</VirtualHost>

相关内容