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

时间:2016-03-11 08:09:03

标签: 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$
RewriteCond %{DOCUMENT_ROOT}/%1 -d
RewriteRule ^ %{DOCUMENT_ROOT}/%1%{REQUEST_URI} [QSA

现在,当我输入“1.domain.com”以到达子目录1下的index.html时,我已设法使用上面的.htaccess规则重定向我。

但如果我转到“1.domain.com/product1”,我会转到我的product1页面,但网址会显示为“1.domain.com/1/product1”。

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

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

我怎样才能做到这一点?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

重写

  • /产品1

  • / 1 /产品1

您可以使用以下规则:

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