0

我正在处理以下问题:

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

所以再次重复。

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

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

4

2 回答 2

2

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

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

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

RewriteRule (.*) /zero$1

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

于 2012-10-25T11:46:26.403 回答
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' 的父目录中的内容)

于 2012-09-14T14:28:51.257 回答