Url rewriting 如何替换';破折号';与';下划线';在IIRF规则中?

Url rewriting 如何替换';破折号';与';下划线';在IIRF规则中?,url-rewriting,iirf,Url Rewriting,Iirf,我有一个web应用程序,它提供基于子域的图像 我们希望为用户提供如下url: http://{username}.domain.com/images/myimage.jpg 而不是我们曾经拥有的: http://www.reallylongdomainname.com/users/{username}/images/myimage.jpg 这使得url更短,更少“窥探” 因此,我设置了一个IIRF.ini文件来进行url重写,除了我们的一些用户文件夹有下划线之外,它工作得非常好。从我读到的内容来

我有一个web应用程序,它提供基于子域的图像

我们希望为用户提供如下url:
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\u user/。

这是我的IIRF规则

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

感谢您的帮助。

如果您知道用户名中的破折号不超过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]

它并不漂亮,但很管用。

有没有用户的用户名中有破折号(因此正确的重新编写的URL应该是/users/some user/)?没有。我正在处理一个具有定义良好的目录结构的遗留系统。适用于我的情况。非常感谢。