Php 子域通过.htaccess+;从URL隐藏子目录

Php 子域通过.htaccess+;从URL隐藏子目录,php,apache,.htaccess,redirect,mod-rewrite,Php,Apache,.htaccess,Redirect,Mod Rewrite,目前,我正在尝试一个环境,允许我通过动态创建子目录来创建子域 目录树 domain.com ├── 1 | └── product1 | └── index.html ├── 2 │ └── product2 └── 3 └── product3 .htaccess规则 #Redirect subdomain to subdirectory RewriteCond %{HTTP_HOST} ^([^\.]+).domain.com$ Rewrit

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

目录树

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

#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下的index.html时,我已经设法使用上面的.htaccess规则重定向我

但是如果我转到“1.domain.com/product1”,我将访问我的product1页面,但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]

您好,这似乎仍然显示“1.domain.com/1/product1”而不是“1.domain.com/product1”@avn您将使用什么url?我输入了“1.domain.com/product1”,它确实显示了product1页面,但url现在是“1.domain.com/1/product1”。我想在domain.com和product1之间隐藏“1”。这是用子目录1硬编码的吗?我需要能够动态创建一个子域,我无法在每次有人创建一个子目录用作subdomain.domain.com时创建一条规则