0

我在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)。

4

1 回答 1

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]
于 2012-07-29T04:39:25.267 回答