来自文件夹的多个子域的htaccess

时间:2012-09-14 13:42:21

标签: .htaccess routing

我正在处理以下问题:

我有一个主域“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

等。所以它是重复的。

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

其次,example.com的内容可从

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

所以再次重复。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

RewriteRule (.*) /zero$1

它似乎有效,但我也在浏览器上修改了我的网址。我该如何避免这种情况发生?

答案 1 :(得分:0)

对于您的第一个问题,您可以添加一个规则,将任何请求重定向到该文件夹​​并将该目录重定向到不存在的页面(以便它引发404错误)

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

对于您的第二个问题,这应该不会发生,因为当您要求a.example.com/folder/file.html时,它会被内部重定向到a.example.com/a/folder/file.html(没有获取'a'的父目录中的内容的方法

相关问题