可能重复:
将所有子域名重定向至子文件夹
我有一个 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>