代码之家  ›  专栏  ›  技术社区  ›  Marco Demaio

Apache mod_rewrite:如何将addon domains子文件夹访问重定向到addon domain本身?

  •  0
  • Marco Demaio  · 技术社区  · 14 年前

    Apache服务器上的情况(目录树):

    maindomain.com/
    |
    |_ .htaccess (just an empty file, no rule in here)
    |
    |_ addondomain1.com/
    |  |
    |  |_ .htaccess
    |  |_ index.html
    |
    |_ addondomain2.com/
       |
       |_ .htaccess
       |_ index.html
    

    当前,addondomain1.com中的文件可以通过以下方式查看:

    http://www.addondomain1.com/index.html
    http://www.addondomain1.com/
    http://www.addondomain1.com
    http://www.maindomain.com/addondomain1.com/index.html
    

    我想重定向所有请求:

    http://maindomain/addondomain1.com/some/path/anypage.html (带或不带“www”)

    http://www.addondomain1.com/some/path/page.html
    

    maindomain.com/addondomain1.com/.htaccess 此规则:

    RewriteCond %{HTTP_HOST} !^www\.addondomain1\.com$ 
    RewriteRule ^(.*)$ "http://wwww.addondomain1.com/$1" [R=301,L]
    

    这一个工作几乎很好,并重定向以及所有下面的:

    http://addondomain1.com/index.html >> http://www.addondomain1.com/index.html
    http://www.addondomain1.com/ >> http://www.addondomain1.com/
    http://www.addondomain1.com  >> http://www.addondomain1.com
    http://www.maindomain.com/addondomain1.com/index.html >> http://www.addondomain1.com/index.html
    http://www.maindomain.com/addondomain1.com/ >> http://www.addondomain1.com/
    http://maindomain.com/addondomain1.com/ >> http://www.addondomain1.com/
    

    但不幸的是

    http://maindomain.com/addondomain1.com
    http://www.maindomain.com/addondomain1.com
    

    注意上面两个链接都没有最后斜杠 ,它重定向到:

    http://www.addondomain1.com//server/root/path/addondomain1.com
    

    我认为regexp ^(.*)$ 正在获取“addondomain1.com”,因为缺少最后一个斜杠。你知道如何解决这个问题吗?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Wrikken    14 年前
    DirectorySlash Off
    
        2
  •  0
  •   Gumbo    14 年前

    试试这个:

    RewriteCond %{HTTP_HOST} !^www\.addondomain1\.com$
    RewriteCond %{REQUEST_URI} ^/[^/]+/(.*)
    RewriteRule ^ http://wwww.addondomain1.com/%1 [R=301,L]