通配符子域名重定向到文件夹而不更改 URL

通配符子域名重定向到文件夹而不更改 URL

因此我设置了我的 htaccess 文件,它看起来像这样:

Options +FollowSymLinks

RewriteEngine on

RewriteBase /

# MAGIC
RewriteCond $1 !/$
RewriteCond $1 !\.
RewriteRule ^(.+)$ /$1/ [R=301,L]
# //MAGIC

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([a-z0-9][-a-z0-9]+)\.domain\.com
RewriteCond %{REQUEST_URI} !^/subdomains/
RewriteRule ^(.*)$ /subdomains/%1/$1 [P,NC,QSA]

我工作得很好,它很好地指导phpmyadmin.domain.comphpmyadmin.domain.com/subdomains/phpmyadmin/

但我觉得这很丑,因为 URL 中显示了这一点。所以我想让它静默地重定向,这样它仍然指向 phpmyadmin.domain.com/subdomains/phpmyadmin/但客户端只能看到phpmyadmin.domain.com

我一直在寻找,但找不到任何能像我想要的那样工作的东西。有人知道如何解决这个问题吗?

答案1

你工作太辛苦了。尝试使用VirtualDocumentRoot带有变量。%1将使用域的第一部分,或%-3将使用倒数第三部分(两者对于您的情况都相同)。您需要启用模块mod_vhost_alias使其工作。

<VirtualHost *:80>
  VirtualDocumentRoot /var/www/%1
  ServerName www.domain.com
  ServerAlias *.domain.com
</VirtualHost>

相关内容