2012-09-14 53 views
0

我处理以下问题的多个子域:htaccess的从文件夹

我有一个主域名“example.com”和多个子域:

one.example.com 
two.example.com 
three.example.com 

等服务器上。

我在文件夹此子域的内容:

./one/ -> one.example.com 
./two/ -> two.example.com 
./three/ -> three.example.com 

所以服务从这些文件夹的子域的内容,我用下面的htaccess文件:

RewriteCond %{HTTP_HOST} ^one.example.com [NC] 
RewriteCond %{REQUEST_URI} !^/one/.* 
RewriteRule ^(.*) /one/$1 [L] 

它工作正常,但我的子域名内容也可从URL访问:

one.example.com/one/my-content 

one.example.com/my-content 

等,所以它是duplicite。

这是我需要解决的一个问题。

二是,内容example.com是accessable从

whatever.example.com 
(a.example.com, b.example.com etc.) 

如此反复duplicite。

所以我的问题是:如何重定向/禁用正在创建重复的URL?

非常感谢,我试了很多版本的代码,但没有任何效果。

回答

0

对于你的第一个问题,您可以添加规则,重定向到该文件夹​​和withing该目录不存在(这样throuws一个404错误)页面

RewriteCond %{HTTP_HOST} ^one\.example\.com$ [NC] 
RewriteCond %{REQUEST_FILENAME} ^one/ 
RewriteRule . /notexists.html [L] 

对于任何请求你的第二个问题,这不应该发生,因为当你问一个.example.com/folder/file.html它会被重定向到a.example.com/a/folder/file.html(没有办法得到'a'的父目录中的内容)

+0

谢谢你的回答。我试图使用你的代码,但没有结果。我忘记提及,我使用动态创建的子域名(DNS记录*在CNAME中),也许这就是问题所在,因为有时候它会表现得很怪,因为我没有这方面的经验...... – Marty

2

我通过将所有请求重定向到该子文件夹到该文件夹​​以及将所有对基本域的请求重定向到另一个来解决此问题,如下所示:

RewriteCond %{HTTP_HOST} ^one\. [NC] 
RewriteRule (.*) /one$1 [L] 

RewriteCond %{HTTP_HOST} ^two\. [NC] 
RewriteRule (.*) /two$1 [L] 

RewriteRule (.*) /zero$1 

它似乎工作,但我也在浏览器上修改了我的URL。我如何避免这种情况发生?

+0

你不应该回答这个问题,同时询问跟进问题。您的后续问题可能无法看到或回答。 – psubsee2003

+0

感谢@ psubsee2003的回复。我会妥善发表另一个问题。 – Lmpessoa