每个 vhost 中带有通配符子域的 mod_rewrite

每个 vhost 中带有通配符子域的 mod_rewrite

:: 编辑 ::

如何设置通配符子域名然后重写地址?

目录结构

/var/www/domain.com        // .htaccess with rewrite rules is placed here
/var/www/domain.com/_admin
/var/www/domain.com/_admin/tst
/var/www/domain.com/_files
/var/www/domain.com/_mysql

.htaccess

RewriteCond %{HTTP_HOST}        ^(admin|files|mysql)\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI}      !^/_(admin|files|mysql)/ [NC]
RewriteRule ^(.*)$               /_%1/$1 [L]

当你请求http://admin.domain.com/tst地址被重写为http://admin.domain.com/_admin/tst

如何修复它以致于/_admin被隐藏?

答案1

您报告的行为似乎与您的配置非常接近。您没有得到预期的结果是什么?

如果您想要重定向domain.com/pagewww.domain.com/page而不是www.domain.com/domain.com/page,这似乎很合理,请删除此块:

RewriteCond %{HTTP_HOST}        ^www\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI}      !^/domain\.com/ [NC]
RewriteRule ^(.*)$          /domain.com/$1 [L]

相关内容