htaccess将所有子域完全重写为目录

时间:2018-07-19 10:20:11

标签: apache .htaccess mod-rewrite

好吧,我正在寻找2个小时的解决方案,但无法解决。

这就是我所拥有的。我已经创建了通配符子域*,因此现在我可以从* .example.com

访问根目录

在此根目录的htaccess中,我已将其放置:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteCond %{HTTP_HOST} ^(\w+)\.example\.com$
RewriteCond %{REQUEST_URI}:%1 !^/([^/]+)/([^:]*):\1
RewriteRule ^(.*)$ /%1/$1 [QSA] 

ErrorDocument 404 http://example.com/404

当我需要它时,它几乎就可以工作。我在通配符的根文件夹上创建文件夹,并且可以使用子域访问这些文件夹。例如,我创建了两个名为“ folder1”和“ folder2”的文件夹,可以在http://folder1.example.comhttp://folder2.example.com上访问它。

第一期: 它仍然让我读取另一个通配符的根文件夹,因此我可以从任何子域访问任何文件夹。例如:http://folder1.example.com/folder1http://folder1.example.com/folder2将显示这些文件夹的内容,我希望只能从子域访问它们。因此,如果在该文件夹中没有这样的文件夹或文件,则应该为所有这些显示404(我的意思是,如果我在folder1内有folder1或folder1.php,它应该显示其内容。

在这里我们来看看第2期

假设我在folder3内有一个名为“ folder1”的文件夹,我想看看它。当我尝试访问http://folder1.example.com/folder3时,它会将我重定向到http://folder1.example.com/folder1/folder3/,除非我转到http://folder1.example.com/folder3/(末尾有斜杠)。但是它应该像普通域一样将我重定向到http://folder1.example.com/folder3/

因此,我需要它作为一个简单的域工作,我唯一需要的是所有文件夹都只能使用相对子域进行访问。子域应只允许访问该文件夹中的内容。

摘要

我有*通配符子域,该子域具有根目录。

在此目录上,我创建了多个文件夹,这些文件夹将放置不同的网站。 (“ folder1,“ folder2”,“ YouNameIt”)

当前没有任何htaccess,我可以通过http://ANYTHING-HERE.example.com/FOLDER-NAME-HERE

访问这些文件夹

我只需要能够通过以下子域访问这些文件夹:http://FOLDER-NAME-HERE.example.com/

如果通配符根目录中的文件夹不存在(http://NOT-EXISTING-FOLDER.example.com)-它应将我重定向到http://example.com/404

它不应该让我从任何子域访问另一个通配符根的文件夹。 (如果http://EXISTING-FOLDER.example.com/ANOTHER-EXISTING-FOLDER-ON-ROOT中不存在{EXISTING-FOLDER,则会重定向到http://EXISTING-FOLDER.example.com/404

当我尝试访问文件夹中的文件夹时,不应将URL从http://FOLDER-1.example.com/FOLDER-INSIDE-FOLDER更改为http://FOLDER-1.example.com/FOLDER-1/FOLDER-INSIDE-FOLDER/

我认为这是最简单的子域解决方案,但是如果您可以提出另一个同样可行的解决方案,请让我和所有社区了解。

0 个答案:

没有答案