0

我有一个基于子域提供图像的网络应用程序。

我们想为我们的用户提供这样的网址: http://{username}.domain.com/images/myimage.jpg

而不是我们曾经拥有的: http://www.reallylongdomainname.com/users/{username}/images/myimage.jpg

这使得 url 更短,更不容易被窥探。

所以我设置了一个 IIRF .ini 文件来进行一些 url 重写,它工作得很好,除了我们的一些用户文件夹有下划线。根据我的阅读,下划线不是域名中的有效字符(即使 IIS 支持它)。

我想知道如何在$1反向引用中进行查找和替换,以便这样的 url:

http://some-user.domain.com/...

可以改写成这样:

/users/some_user/..

这是我的 IIRF 规则。

RewriteCond %{HTTP_HOST} ^(?!www)([^\.]+)\.domain\.com
RewriteRule ^/(.*)$   /users/*1/$1 [L,I]

谢谢你的帮助。

4

1 回答 1

1

如果您知道用户名中不超过 x 破折号:

# no dash
RewriteCond %{HTTP_HOST} ^(?!www)([^\.\-]+)\.domain\.com
RewriteRule ^/(.*)$   /users/*1/$1 [L,I]

# one dash
RewriteCond %{HTTP_HOST} ^(?!www)([^\.\-]+)-([^\.\-]+)\.domain\.com
RewriteRule ^/(.*)$   /users/*1_*2/$1 [L,I]

# two dashes
RewriteCond %{HTTP_HOST} ^(?!www)([^\.\-]+)-([^\.\-]+)-([^\.\-]+)\.domain\.com
RewriteRule ^/(.*)$   /users/*1_*2_*3/$1 [L,I]

它不漂亮,但它有效。

于 2010-06-11T19:09:23.603 回答