Url rewriting 如何替换';破折号';与';下划线';在IIRF规则中?
我有一个web应用程序,它提供基于子域的图像 我们希望为用户提供如下url: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重写,除了我们的一些用户文件夹有下划线之外,它工作得非常好。从我读到的内容来
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/)?没有。我正在处理一个具有定义良好的目录结构的遗留系统。适用于我的情况。非常感谢。