创建虚拟主机并将其转发子域


8

苏大师

我有一个简单的.htaccess文件,在该文件中,我的Webapp只将非www重定向到www。现在我要做的是

  1. 创建一个新的虚拟主机,例如http://subdomain.mydomain.tld
  2. 为任何人进入该子域创建一个重定向到我的应用程序上的文件夹,例如app / webroot / subdomain

我当前的.htaccess看起来像这样

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^www\.mydomain\.tld [NC]
    RewriteRule ^(.*)$ http://www.mydomain.tld/$1 [R=301.L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ app/webroot/$1 [QSA,L]
</IfModule>

我将如何处理?我可以在.htaccess文件中完成所有这些操作,还是需要与GoDaddy混淆?如果可以的话,我宁愿不在应用程序中执行此操作。

我正在运行Ubuntu 10.04 + Apache 2.2.14-5

谢谢

Answers:


18

这是您需要放入.htaccess文件的内容:

RewriteEngine on
# redirect mydomain.tld to www.mydomain.tld
RewriteCond %{HTTP_HOST} ^mydomain\.tld [NC]
RewriteRule ^(.*)$ http://www.mydomain.tld/$1 [R=301,L]

# default website
RewriteCond %{HTTP_HOST} ^www\.mydomain\.tld$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app/webroot/$1 [NC,QSA,L]

# subdomain to folder
RewriteCond %{HTTP_HOST} ^(sub|subfolder)\.domain\.com$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^(.*)/?$ http://www.domain.com/%1/$1 [NC,QSA,L]

谢谢,我需要首先为该子域设置虚拟主机吗?

如果需要,您始终可以使用与WWW相同的DocumentRoot为其提供虚拟主机。您也可以更改www虚拟主机的ServerAlias以添加更多域,例如:ServerAlias domain.com www.domain.com sub.domain.com。

抱歉,我是带有apache2的n00b。因此,有两件事-1.我只想允许一个固定的子域,而不是根据您的代码([a-z0-9]),我应该将其更改为^(sub)吗?2.如何重新设置虚拟主机(对您来说太n00b?对不起)?

1)查看我的更新答案。2)您是否创建了子域条目?您是否将它指向与www相同的地方?

1)我盯着它看,还找不到任何更改,我是否真的迷失了方向?2)除了.htaccess文件外,该.htaccess文件中没有其他内容。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.