使用htaccess在一个根目录中的多个域

时间:2011-04-18 15:21:55

标签: .htaccess

我有两个域,指向一个托管的根;

firstdomainname.com和seconddomain.com将指向一个根。

mymaindomain.com

mymaindomain.com/first-domain /

mymaindomain.com/second-domain /

我现有的htaccess代码是(不工作)


#two domains served from one root..
RewriteCond %{HTTP_HOST} firstdomainname.com
RewriteCond %{REQUEST_URI} !^/first-domain
RewriteRule ^(.*)$ first-domain/$1 [L]

RewriteCond %{HTTP_HOST} seconddomain.com
RewriteCond %{REQUEST_URI} !^second-domain
RewriteRule ^(.*)$ second-domain/$1 [L]

有可能吗?

3 个答案:

答案 0 :(得分:0)

不确定这是否可以解决您的问题,但您错过!^two中的正斜杠应为!^/two

答案 1 :(得分:0)

使用以下规则:

RewriteCond %{HTTP_HOST} ^firstdomainname\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/first-domain/ [NC]
RewriteRule ^(.*)$ /first-domain/$1 [L]

RewriteCond %{HTTP_HOST} ^seconddomain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/second-domain/ [NC]
RewriteRule ^(.*)$ /second-domain/$1 [L]

答案 2 :(得分:0)

我使用名称“subsite1”和“subsite2”而不是“firstdomain”和“seconddomain”来保持语义清晰。

下面的这些重写规则将加载正确的内容并强制执行您的子网站域。

# Force subsite domain for subsite directories
RewriteCond %{REQUEST_URI} ^/?subsite1/?(.*)$
RewriteRule .* http://subsite1.com/%1 [R=302,QSA]
RewriteCond %{REQUEST_URI} ^/?subsite2/?(.*)$
RewriteRule .* http://subsite2.com/%1 [R=302,QSA]

# Load appropriate content
RewriteCond %{HTTP_HOST} ^subsite1\.com$
RewriteCond %{REQUEST_URI} ^/?(.*)$
RewriteRule .* /subsite1/%1 [L]
RewriteCond %{HTTP_HOST} ^subsite2\.com$
RewriteCond %{REQUEST_URI} ^/?(.*)$
RewriteRule .* /subsite2/%1 [L]

与您的规则不同,这些规则会阻止像“subsite1.com/subsite1”这样的冗余网址,因为第一组规则中的重写不是以域为条件的。

一旦你测试了这一点,一定要把第一套规则中的R = 302改为R = 301。