我使用一个网络服务器来托管两个不同的网站,每个网站都有自己的域名,并位于服务器上自己的子目录中。两个域都指向我服务器的根目录 这是我的文件结构:
根/
DOMAIN1 /
域2 /
在我的根目录中,我使用一个小的PHP脚本来确定进入哪个URL,然后将其转发到相应的子目录。
if (($_SERVER['SERVER_NAME'] == "www.domain1.com" || $_SERVER['SERVER_NAME'] == "domain1.com") ) {
Header( "HTTP/1.1 301 Moved Permanently" );
header("location: http://www.domain1.com/domain1");
}
else if (($_SERVER['SERVER_NAME'] == "www.domain2.com" || $_SERVER['SERVER_NAME'] == "domain2.com") ) {
Header( "HTTP/1.1 301 Moved Permanently" );
header("location: http://www.domain2.com/domain2");
}
到这里它完全没问题。当我调用ww.domain1.com时,我会转发到相应的子目录,域名将更改为www.domain1.com/domain1。这是我的问题所在:我如何隐藏URL中的子目录?多年来我一直在努力,阅读mod_rewrite的指南并搜索SO但是没有取得成功。
我已经测试了我的服务器RewriteEngine On,它工作正常,我无法得到理想的行为。
编辑:
这是我的htaccess代码,位于子目录domain1中。相同的代码位于directory2中,更改为命名约定。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?domain1.com$
RewriteRule !^domain1/ domain1%{REQUEST_URI} [L]
我从SO得到了这个想法:SO Article
提前致谢;)
答案 0 :(得分:0)
你可以在htaccess中使用apache条件。使用以下代码创建文件.htaccess
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain1\.com
RewriteRule ^(.*)$ /domain1/$1 [L,NC,QSA]
RewriteCond %{HTTP_HOST} ^(.*)\.domain2\.com
RewriteRule ^(.*)$ /domain2/$1 [L,NC,QSA]
除了静默重定向到子目录之外,这也会传递所有参数。您在浏览器中的网址不会显示重定向。
答案 1 :(得分:0)
您可以在Root / .htaccess中使用以下代码:
RewriteEngine on
#--Rewrite domain1 to /domain1 folder--#
RewriteCond %{HTTP_HOST} ^(www\.)?domain1.com$
RewriteRule ^((?!domain1).*)$ /domain1/$1 [NC,L]
#--Rewrite domain2 to /domain2 folder--#
RewriteCond %{HTTP_HOST} ^(www\.)?domain2.com$
RewriteRule ^((?!domain2).*)$ /domain2/$1 [NC,L]