我有一个网络应用程序,它根据子域提供图像。
我们希望为用户提供以下网址:
http://{username}.domain.com/images/myimage.jpg
而不是我们曾经拥有的:
http://www.reallylongdomainname.com/users/{username}/images/myimage.jpg
这使得网址更短,更少“可窥探”。
所以我设置了一个IIRF .ini文件来进行一些url重写,除了我们的一些用户文件夹有一个下划线之外,它的效果很好。从我读过的内容来看,下划线不是域名中的有效字符(即使IIS支持它)。
我想知道如何在$1
后退引用中进行查找和替换,以便这样的网址:
http://some-user.domain.com/...
可以改写为:
/users/some_user/..
这是我的IIRF规则。
RewriteCond %{HTTP_HOST} ^(?!www)([^\.]+)\.domain\.com
RewriteRule ^/(.*)$ /users/*1/$1 [L,I]
感谢您的帮助。
答案 0 :(得分: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]
它不漂亮,但它有效。