如何替换“破折号”带“下划线”在 IIRF 规则中?

发布于 2024-09-05 12:11:22 字数 692 浏览 5 评论 0原文

我有一个网络应用程序,它根据子域提供图像。

我们想为我们的用户提供一个像这样的网址: 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/...< /code>

可以重写为:

/users/some_user/..

这是我的 IIRF 规则。

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

感谢您的任何帮助。

I have a web app which serves images based on the subdomain.

We wanted to provide our users with a url like this:
http://{username}.domain.com/images/myimage.jpg

Instead of what we used to have:
http://www.reallylongdomainname.com/users/{username}/images/myimage.jpg

This makes the url shorter and less 'snoopable'.

So I set up an IIRF .ini file to do some url rewriting and it works great except for the fact that some of our users folders have an underscore. And from what I've read, underscore is not a valid character in a domain name (even though IIS supports it).

I want to know how I could do a find and replace in the $1 back reference so that a url like this:

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

Could be rewritten to this:

/users/some_user/..

Here's my IIRF rule.

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

Thanks for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

娇柔作态 2024-09-12 12:11:22

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

它并不美观,但可以使用。

If you know there is no more than x dashes in the username:

# 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]

It's not beautiful, but it works.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文