Apache(htaccess)根据用户选择的域重定向到目录

时间:2012-07-29 04:15:48

标签: apache http .htaccess redirect directory

我在stackoverflow上发现了一些有趣的想法,但没有一个对我说得太清楚,所以我不得不问自己是否可以做到:)

情况:

我安装了apache http服务器的linux和www目录下不同内容的文件夹中的一堆站点。

让我们说:

www/Site1 (Phpbb)
www/Site2 (Wordpress)
www/Site3 (Own web pages)

我拥有一个打算在Site3上使用的域名(我们称之为site3.com,www.site3.com)。 我在no-ip.org创建了两个域名(让我们称之为site1.sytes.net和site2.sytes.net)。 所有三个创建的域都指向linux(apache)服务器ip地址的端口80。

所以我们准备好了这些域名:

www.site3.com
site1.sytes.net
site2.sytes.net

现在的问题是:

如何为希望从这些域中获取内容的用户创建重定向到特定目录。 我希望用户想要获得“site1.sytes.net”(并将其写入浏览器)指向Site1目录并重写浏览器地址以省略该目录并只放置“http://site1.sytes.net”。

例如:

User want: site1.sytes.net [/index.html]
Server goes to: www/Site1 [/index.html]
User see in browser: http://site1.sytes.net [/index.html]

等等:

site2.sytes.net [/index.html] => www/Site2 [/index.html]
www.site3.com [/index.html] => www/Site3 [/index.html]

如果我没弄错,HTTP_HOST将只返回域名,所以试图找出用户为site1.sytes.net和site2.sytes.net写入浏览器的内容是没用的(因为它只返回sytes.net)

1 个答案:

答案 0 :(得分:0)

%{HTTP_HOST}确实是你想要的,是的,它只匹配域。但是您在条件中使用它并使用%{REQUEST_URI}或规则本身来匹配URI。尝试将它放在你的文档根目录中的htaccess文件中(我假设你的所有网站都是相同的,否则,没有必要这样做):

RewriteEngine On
RewriteCond %{HTTP_HOST} site1.sytes.net [NC]
RewriteCond %{REQUEST_URI} !^/Site1
RewriteRule ^(.*)$ /Site1/$1 [L]

RewriteCond %{HTTP_HOST} site2.sytes.net [NC]
RewriteCond %{REQUEST_URI} !^/Site2
RewriteRule ^(.*)$ /Site2/$1 [L]

RewriteCond %{HTTP_HOST} www.site3.com [NC]
RewriteCond %{REQUEST_URI} !^/Site3
RewriteRule ^(.*)$ /Site3/$1 [L]