htaccess - 点域和子域到文件夹

时间:2013-11-11 07:51:45

标签: .htaccess redirect rewrite subdomain

我在FTP root上有两个文件夹。 site_v1site_v2。 site_v2有新版本的网站,site_v1有旧版本。我想将我的域名指向site_v2,即最新版本。所以我在root下创建了一个.htaccess。

RewriteCond %{HTTP_HOST} example.com
RewriteCond %{REQUEST_URI} !site_v2/ 
RewriteRule ^(.*)$ site_v2/$1 [L]

这很有效。当我打开http://example.com; site_v2无缝加载。

然后,对于site_v1,我创建了一个子域http://old.example.com并将其指向site_v1文件夹;运行http://old.example.com时出现此错误。

The requested URL /site_v1/site_v2/site_v1/index.html 
was not found on this server.

我很无能为力。似乎http://old.example.com仍指向site_v2,因为root上的.htaccess。可能是什么解决方案,所以我可以强制old.example.com加载site_v1

1 个答案:

答案 0 :(得分:3)

尝试将规则更改为:

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/site_v[0-9]/ 
RewriteRule ^(.*)$ /site_v2/$1 [L]

RewriteCond %{HTTP_HOST} ^old\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/site_v[0-9]/ 
RewriteRule ^(.*)$ /site_v1/$1 [L]

这样,与`%{HTTP_HOST} var匹配的主机不会重叠。