使用 mod_rewrite 处理非硬编码域名

发布于 2024-08-17 13:34:24 字数 565 浏览 5 评论 0原文

我正在迁移我的应用程序,该应用程序为每个用户提供一个子站点,从domain.com/~user 到user.domain.com。为了做到这一点,我编写了以下 RewriteRule

RewriteRule ^~([a-z_]+)(/.*)?$ http://$1.%{HTTP_HOST}$2 [R=301,QSA,NC]

但是,%{HTTP_HOST} 并没有完全满足我的需要,因为如果用户浏览到 www.domain.com/~user,它会重定向到 user.www.domain.com,这显然不是我要找的。

我知道我可以将 %{HTTP_HOST} 替换为硬编码域,但我也不想这样做,因为我将在多个域上推出更改,并且不想必须为每一个进行定制。有没有更好的方法可以在不进行硬编码的情况下进行单一更改? (此外,如果基域已经有子域,即 sub.domain.com/~user -> user.sub.domain.com,该怎么办?

I am migrating my application which provides a subsite for each user from domain.com/~user to user.domain.com. In order to do this, I wrote the following RewriteRule:

RewriteRule ^~([a-z_]+)(/.*)?$ http://$1.%{HTTP_HOST}$2 [R=301,QSA,NC]

However, %{HTTP_HOST} doesn't do exactly what I need it to, because if for instance a user browses to www.domain.com/~user, it'll redirect to user.www.domain.com which is obviously not what I'm looking for.

I know that I can replace %{HTTP_HOST} with a hardcoded domain, but I don't want to do this either, because I will be rolling out the changes on multiple domains and don't want to have to customize it for each one. Is there a better way to make a singular change without hardcoding? (Furthermore, what if the base domain already has a subdomain -- ie. sub.domain.com/~user -> user.sub.domain.com)

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

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

发布评论

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

评论(1

天涯沦落人 2024-08-24 13:34:24

尝试使用此附加 RewriteCond

RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^~([a-z_]+)(/.*)?$ http://$1.%2$2 [R=301,QSA,NC]

这将从主机中删除 www. 前缀(如果存在)。

Try it with this additional RewriteCond:

RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^~([a-z_]+)(/.*)?$ http://$1.%2$2 [R=301,QSA,NC]

This will remove the www. prefix from the host if present.

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