通过 .htaccess 动态子域 + 从 URL 隐藏子目录


Subdomain on the fly via .htaccess + hide subdirectory from URL

目前,我正在尝试拥有一个环境,允许我通过动态创建子目录来创建子域。

目录树,

domain.com
  ├── 1
  |   └── product1
  |   └── index.html
  ├── 2
  │   └── product2
  └── 3
      └── product3

.ht访问规则,

#Redirect subdomain to subdirectory
RewriteCond %{HTTP_HOST} ^([^'.]+).domain.com$
RewriteCond %{DOCUMENT_ROOT}/%1 -d
RewriteRule ^ %{DOCUMENT_ROOT}/%1%{REQUEST_URI} [QSA

现在,当我输入"1.domain.com"以访问子目录 1 下的索引时.html我已经设法使用上面的 .htaccess 规则重定向我。

但是,如果我转到"1.domain.com/product1",我将访问我的产品1页面,但URL将显示为"1.domain.com/1/product1"。

如何隐藏 domain.com 和 product1 之间的"1",使其仍显示为"1.domain.com/product1",但在后台访问"1.domain.com/1/product1"目录?

我做了很多研究,发现通常人们会要求对目录的名称进行硬编码,但在这种情况下它不起作用,因为人们会动态创建子目录以获取不同的子域,所以我需要一个通用的 .htacess 规则来处理这个问题。

我怎样才能做到这一点?

感谢您的帮助!

重写

  • /产品1

    /1
  • /产品1

您可以使用以下规则:

RewriteRule ^((?!1).+)$ /1%{REQUEST_URI} [NC,L]