Apache(htaccess)根据用户选择的域重定向到目录
我在这里发现了一些关于stackoverflow的有趣想法,但没有一个对我来说足够清楚,所以我不得不问自己,这是否可以做到:) 情况: 我已经安装了带有ApacheHTTP服务器的linux,并且在www目录的文件夹中有一堆不同内容的站点 比如说:Apache(htaccess)根据用户选择的域重定向到目录,apache,http,.htaccess,redirect,directory,Apache,Http,.htaccess,Redirect,Directory,我在这里发现了一些关于stackoverflow的有趣想法,但没有一个对我来说足够清楚,所以我不得不问自己,这是否可以做到:) 情况: 我已经安装了带有ApacheHTTP服务器的linux,并且在www目录的文件夹中有一堆不同内容的站点 比如说: www/Site1 (Phpbb) www/Site2 (Wordpress) www/Site3 (Own web pages) 我拥有一个打算在Site3上使用的域(我们称之为Site3.com,www.Site3.com)。 我在no-ip.
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\U主机将只返回域,因此尝试找出用户在site1.sytes.net和site2.sytes.net浏览器中写入的内容是无用的(因为它将只返回sytes.net)。您确实需要
%{HTTP\U主机}
,是的,它只匹配域。但是您在一个条件中使用它,并使用%{REQUEST\u URI}
或规则本身来匹配URI。尝试将其放在文档根目录下的htaccess文件中(我假设所有站点的根目录都是相同的,否则,这样做没有任何意义):
如果这不起作用,可能是因为no-ip.org正在将请求转换为服务器最近缓存的ip地址。
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]