关于 .htaccess:是否可以使用没有重定向(R 标志)的通配符创建子域?

Is possible make subdomains with wildcards without redirect (R flag)?

我认为我已经在我的域中配置了通配符,因为它对我有用:

1
2
3
RewriteCond %{HTTP_HOST} !^www\\.example\\.com [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\\.example\\.com
RewriteRule ^(.*)$ http://www.example.com/member.php?username=%1 [R,L]

但只有当我使用 R 或 R=301 标志重定向时。我想要一个虚拟子域,而用户不会注意到它。 subdomain.example.com 并且不要更改栏中的 url。

我已经尝试了下一个:

1
2
3
RewriteCond %{HTTP_HOST} !^www\\.example\\.com [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\\.example\\.com
RewriteRule ^(.*)$ http://www.example.com/member.php?username=%1 [L]

没有 R 标志。但我得到一个内部服务器错误。问题是什么?有人可以帮帮我吗?


如果没有重定向,您将无法重定向到绝对 url。

本文档中的

"Virtual user host" 部分解决了您的问题。

如果你的 user.example.com 和 www.example.com 指向同一台机器,那么

1
2
3
RewriteCond %{HTTP_HOST} !^www.example.com [NC]
RewriteCond %{HTTP_HOST} ^([^.]+).example.com
   RewriteRule ^(.*)$      /member.php?username=%1 [L]

但是你打算如何处理 RewriteRule 中捕获的组