我正在处理以下问题:
我有一个主域“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.)
所以再次重复。
所以我的问题是:如何重定向/禁用创建重复的网址?
非常感谢,我尝试了很多版本的代码,但没有效果。
答案 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'的父目录中的内容的方法