将每个子域重定向到单个目录

Redirect every subdomain to single directory

这和.htaccess rewrite subdomain to directory

几乎一样

此解决方案有效:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^([^.]+)\.jcubic\.atthost24\.pl$
RewriteRule ^((?!subdomains/).*)$ /subdomains/%1/ [L,NC,QSA]

但是我想转发但是没有/subdomains目录所以

http://img.jcubic.atthost24.pl/.* 应该读作 http://jcubic.atthost24.pl/img/.*

这可能吗?这行不通

RewriteRule ^((?!%1/).*)$ /%1/ [L,NC,QSA]

我不确定我有什么版本的 Apache。

这可能就是您要查找的内容:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^img\.jcubic\.atthost24\.pl$
RewriteRule ^/?(.*)/?$ /img/ [END,QSA]

但是请注意,您应该尝试将此类规则放在 http 服务器的主机配置中,而不是使用动态配置文件 (".htaccess")。

不过,以上规则在两种情况下都适用。

如果您遇到内部错误(http 状态 500),请检查错误日志文件。如果它抱怨一个未知的 END 标志,那么您可能使用了一个非常旧版本的 apache http 服务器。在那种情况下尝试 L 标志,它应该在这里工作相同,尽管这实际上取决于具体情况。

更新,根据您的评论:

如果要以动态方式处理主机名 "img",您可以这样做:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.jcubic\.atthost24\.pl$
RewriteRule ^/?(.*)/?$ /%1/ [END,QSA]

也许您想检查该文件夹是否实际存在于 http 服务器的物理文件系统中。