重写子域

发布于 2024-09-26 15:03:08 字数 180 浏览 2 评论 0原文

显然这是一个非常简单的问题:我如何重写

(值1).example.com/(值2)

/(值1)/(值2)

我尝试了一些方法但没有成功。

先感谢您。

Obviously a pretty simple question: how do I rewrite

(value1).example.com/(value2)

to

/(value1)/(value2)

I've tried a couple of things without success.

Thank you in advance.

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

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

发布评论

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

评论(1

柒夜笙歌凉 2024-10-03 15:03:08

尝试这个规则:

RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.com$
RewriteCond $1/%1 !^([^/]+)/\1$
RewriteRule ^/([^/]+)? /%1%{REQUEST_URI} [L]

一些解释:我之前的建议导致无限递归,因为 < em>L 标志 导致使用新 URL 重新启动重写过程:

但是请记住,如果 RewriteRule 生成内部重定向(在每个目录上下文中重写时经常发生),这将重新注入请求并导致从以下位置开始重复处理:第一个RewriteRule

第二个条件将避免这种情况,因为它将子域部分与第一个路径段进行比较。并且只有当它们不同时,条件才为真并且重写才会发生。

Try this rule:

RewriteCond %{HTTP_HOST} ^([^/.]+)\.example\.com$
RewriteCond $1/%1 !^([^/]+)/\1$
RewriteRule ^/([^/]+)? /%1%{REQUEST_URI} [L]

Some explanation: My previous suggestion caused an infinite recursion as the L flag causes a restart of the rewriting process with the new URL:

Remember, however, that if the RewriteRule generates an internal redirect (which frequently occurs when rewriting in a per-directory context), this will reinject the request and will cause processing to be repeated starting from the first RewriteRule.

The second condition will avoid this as it compares the subdomain part with the first path segment. And only if they are different the condition is true and the rewrite takes place.

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