这是我的设置
Root上子域的目录结构是:
sub/
- 对于子域(默认值)
现在我在根目录
中为bar.com创建一个子文件夹 bar/
- 适用于bar.com
并创建了以下规则
RewriteCond %{HTTP_HOST} bar.com
RewriteCond %{REQUEST_URI} !bar/
RewriteRule ^(.*)$ bar/$1 [L]
结果将是。
所以底线是我不希望用户直接访问目录树上的子目录。这可能吗?如何?
编辑:请不要开始讲述虚拟主机,我无法访问此服务器上的httpd.conf
答案 0 :(得分:0)
在主网站的.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]
从子目录托管的其他2个网站不应该尝试使用此设置尝试映射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]
对于sub.foo.com
,你可以这样做:
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]