0

サブドメインに基づいて画像を提供するWebアプリがあります。

ユーザーに次のようなURLを提供したかったのです。 http://{username}.domain.com/images/myimage.jpg

以前持っていたものの代わりに: http://www.reallylongdomainname.com/users/{username}/images/myimage.jpg

これにより、URLが短くなり、「スヌープ可能」になります。

そこで、URLの書き換えを行うためにIIRF .iniファイルを設定しました。これは、一部のユーザーフォルダーにアンダースコアが付いていることを除けば、うまく機能します。そして、私が読んだことから、アンダースコアはドメイン名の有効な文字ではありません(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 に答える