Apache .htaccess子文件夹、子域和附加域

Apache .htaccess子文件夹、子域和附加域,apache,.htaccess,Apache,.htaccess,这是我的设置 主域名:foo.com 子域:Sub.foo.com 附加域:bar.com 根目录上子域的目录结构如下: sub/-用于子域(默认) 现在,我在根目录中为bar.com创建了一个子文件夹 bar/-用于bar.com 并创建了以下规则 RewriteCond %{HTTP_HOST} bar.com RewriteCond %{REQUEST_URI} !bar/ RewriteRule ^(.*)$ bar/$1 [L] 结果将是 sub.foo.com-sub/ ba

这是我的设置

  • 主域名:foo.com
  • 子域:Sub.foo.com
  • 附加域:bar.com
根目录上子域的目录结构如下:

sub/
-用于子域(默认)

现在,我在根目录中为bar.com创建了一个子文件夹

bar/
-用于bar.com

并创建了以下规则

RewriteCond %{HTTP_HOST} bar.com
RewriteCond %{REQUEST_URI} !bar/
RewriteRule ^(.*)$ bar/$1 [L]
结果将是

  • sub.foo.com-sub/
  • bar.com-酒吧/
  • bar.com/bar-bar/(如何修复此问题?使其重定向到bar.com?
  • bar.com/sub-sub/(如何修复此问题?使其重定向到sub.foo.com?
  • foo.com/bar-bar/(如何修复此问题?使其重定向到bar.com?
  • foo.com/sub-sub/(如何修复此问题?使其重定向到sub.foo.com?
所以底线是我不希望用户直接访问目录树上的子目录。这可能吗?怎么做


编辑:请不要开始讲述虚拟主机,我无法访问此服务器上的httpd.conf

主站点的
。htaccess

RewriteCond %{HTTP_HOST} 

RewriteCond %{HTTP_HOST} www.foo.com
RewriteCond %{REQUEST_FILENAME} ^bar
RewriteRule ^bar/(.*)$ http://www.bar.com/$1 [R=301,L,QSA]

RewriteCond %{HTTP_HOST} www.foo.com
RewriteCond %{REQUEST_FILENAME} ^sub
RewriteRule ^sub/(.*)$ http://sub.foo.com/$1 [R=301,L,QSA]
其他两个站点,从子目录托管,不需要使用此设置尝试从类似
bar.com/bar/…
的对象映射

bar.com
网站中,您可以执行以下操作:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} ^bar/(.*)$
RewriteRule .* %1 [R=301,L,QSA]

RewriteRule ^bar/?$ / [R=301,L,QSA]

RewriteCond %{HTTP_HOST} www.bar.com
RewriteCond %{REQUEST_FILENAME} ^sub
RewriteRule ^sub/(.*)$ http://sub.foo.com/$1 [R=301,L,QSA]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} ^sub/(.*)$
RewriteRule .* %1 [R=301,L,QSA]

RewriteRule ^sub/?$ / [R=301,L,QSA]

RewriteCond %{HTTP_HOST} sub.foo.com
RewriteCond %{REQUEST_FILENAME} ^bar
RewriteRule ^bar/(.*)$ http://www.bar.com/$1 [R=301,L,QSA]
对于
sub.foo.com
,您可以执行以下操作:

RewriteBase /
RewriteCond %{REQUEST_FILENAME} ^bar/(.*)$
RewriteRule .* %1 [R=301,L,QSA]

RewriteRule ^bar/?$ / [R=301,L,QSA]

RewriteCond %{HTTP_HOST} www.bar.com
RewriteCond %{REQUEST_FILENAME} ^sub
RewriteRule ^sub/(.*)$ http://sub.foo.com/$1 [R=301,L,QSA]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} ^sub/(.*)$
RewriteRule .* %1 [R=301,L,QSA]

RewriteRule ^sub/?$ / [R=301,L,QSA]

RewriteCond %{HTTP_HOST} sub.foo.com
RewriteCond %{REQUEST_FILENAME} ^bar
RewriteRule ^bar/(.*)$ http://www.bar.com/$1 [R=301,L,QSA]