php - 用动态主机名重写url

时间:2010-09-07 14:04:57

标签: php .htaccess url-rewriting

我需要使用下面的规则重写网址

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

4 个答案:

答案 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。)