我需要使用下面的规则重写网址
RewriteRule ^files/([a-z0-9-\.]+)$ files/domain.com/$1
domain.com是当前的主机名。它是动态的(不要问为什么PLZ)。所以我不能这样做。无论如何,我如何获得当前的主机名并将其如下所示:
RewriteRule ^files/([a-z0-9-\.]+)$ files/{{ current host name with out www. }}/$1
答案 0 :(得分:4)
%{HTTP_HOST}
将为您提供所请求的主机名。
我现在无法测试它是否可用于RewriteRule
,但我认为可以。
答案 1 :(得分:3)
RewriteCond %{HTTP_HOST} ^(www\.)(.*)$
RewriteRule ^files/(a-z0-9-\.]+)$ files/%2/$1
也无法测试,但它应该是这样的。 (www \。)确保使用或不使用www,然后HTTP_HOST中的(。*)部分捕获域的其余部分。通过使用%2,此域稍后将在新请求中重复使用。
答案 2 :(得分:3)
如前所述,%{HTTP_HOST}
包含Host header field的值。
您可以使用以下内容始终只获取最后两个域级别:
RewriteCond %{HTTP_HOST} ([^.]+\.[^.]+)$
RewriteRule ^files/([a-z0-9-\.]+)$ files/%1/$1
答案 3 :(得分:1)
我认为这可能适合你:
RewriteRule ^files/([a-z0-9-\.]+)$ files/%{SERVER_NAME}/$1
RewriteRule ^files/www\.([^/]+)/([a-z0-9-\.]+)$ files/$1/$2
(第二行从域中删除任何www。)