【问题标题】:.htaccess subfoders, subdomains and addon domains.htaccess 子目录、子域和插件域
【发布时间】:2013-07-11 11:14:14
【问题描述】:

这是我的设置

  • 主域: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

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    在主站的.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]
    

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 2017-01-23
      • 2014-05-04
      • 2023-03-06
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多