将任何带 www 子域的 URL 重写为不带 www 的相应子域

发布于 2024-12-17 20:29:39 字数 797 浏览 0 评论 0原文

我们有一个多子域站点,它根据子域文本生成动态内容。但是,如果将 www 附加到子域,则它不起作用。由于有些用户习惯在每个 URL 前面添加 www,我们希望通过 URL 重写来修复它。

编辑

我已经做到了这一点:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.subdominio\.dev [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{http_host} ^www\.([^\.]+)\.subdominio\.dev [NC]
RewriteRule ^(.*) http://%1.subdominio.dev$1 [R=301,QSA,NC]

令人惊讶。它在我的一个测试子域中运行良好,但在另一个测试子域中则不然:

www.otro-mas.subdominio.dev 被重定向到 otro-mas.subdomino.dev(有或没有像 /index.html 这样的 URI)。正如预期的那样。

然而 www.ono.subdominio.dev 正在进入无限重定向。像这样:

http://www.ono。 subdominio.dev/ono.subdominio.dev//ono.subdominio.dev//ono...

为什么不重写主机?

We have a multi-subdomain site that generates dynamic cotent depending on the subdomain text. However it does not work if www is appended to the subdomain. As some users are used to add www in front of every URL, we would like to fix it with a URL rewrite.

EDIT

I have got this far:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.subdominio\.dev [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{http_host} ^www\.([^\.]+)\.subdominio\.dev [NC]
RewriteRule ^(.*) http://%1.subdominio.dev$1 [R=301,QSA,NC]

Surprisingly. It works well in one of my test subdomains, but not in the other:

www.otro-mas.subdominio.dev gets redirected to otro-mas.subdomino.dev (with and without an URI like /index.html). Just as expected.

However www.ono.subdominio.dev is going into an infinite redirect. Like this:

http://www.ono.subdominio.dev/ono.subdominio.dev//ono.subdominio.dev//ono...

Why is it not rewriting the host?

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

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

发布评论

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

评论(2

妄断弥空 2024-12-24 20:29:39

试试这个:

RewriteCond %{HTTP_HOST} ^www\.([a-zA-Z-_]+)\.domain\.com [NC]
RewriteRule ^(.*)$ http://%1\.domain\.com/$1 [R=301,NC,QSA,L]

您可能忘记了 QSAL 指令(在 Apache mod_rewrite 文档 进行解释)。

Try this:

RewriteCond %{HTTP_HOST} ^www\.([a-zA-Z-_]+)\.domain\.com [NC]
RewriteRule ^(.*)$ http://%1\.domain\.com/$1 [R=301,NC,QSA,L]

You probably forgot the QSA and the L directives (search on the Apache mod_rewrite documentation for the explanation).

月光色 2024-12-24 20:29:39

它确实有效。

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.subdominio\.dev [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{http_host} ^www\.([^\.]+)\.subdominio\.dev [NC]
RewriteRule ^(.*) http://%1.subdominio.dev$1 [R=301,QSA,NC]

我的浏览器缓存出现一些问题。

It does work.

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.subdominio\.dev [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{http_host} ^www\.([^\.]+)\.subdominio\.dev [NC]
RewriteRule ^(.*) http://%1.subdominio.dev$1 [R=301,QSA,NC]

I had some problem with the caches in my browser.

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