这与.htaccess rewrite subdomain to directory
几乎相同此解决方案有效:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.jcubic\.atthost24\.pl$
RewriteRule ^((?!subdomains/).*)$ /subdomains/%1/$1 [L,NC,QSA]
但是我想转发但没有/ subdomains目录,所以
http://img.jcubic.atthost24.pl/.*
应该读为http://jcubic.atthost24.pl/img/.*
这可能吗?这不起作用
RewriteRule ^((?!%1/).*)$ /%1/$1 [L,NC,QSA]
我不确定我拥有的Apache版本。
答案 0 :(得分:1)
这可能就是您要寻找的:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^img\.jcubic\.atthost24\.pl$
RewriteRule ^/?(.*)/?$ /img/$1 [END,QSA]
但是请注意,您应该尝试将此类规则放置在http服务器的主机配置中,而不要使用动态配置文件(“ .htaccess”)。
以上规则在两种情况下均适用。
如果遇到内部错误(http状态为500),请检查错误日志文件。如果它抱怨未知的END
标志,那么您可能正在运行apache http服务器的非常旧的版本。在这种情况下,请尝试使用L
标志,尽管实际上取决于具体情况,但它在这里应保持相同的工作方式。
更新,根据您的评论:
如果要以动态方式处理主机名“ img”,则可以执行以下操作:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.jcubic\.atthost24\.pl$
RewriteRule ^/?(.*)/?$ /%1/$1 [END,QSA]
也许您想添加一个检查,以确定该文件夹是否实际存在于http服务器的物理文件系统中。